Saya telah membaca tentang && dan || Dan saya ingin menjalankan dua perintah dalam kasus yang salah.
Saya sudah mencoba ;
tetapi itu selalu berjalan . Saya telah mencoba memasukkannya ke kurung kurawal { command1; command2 }
tetapi itu menghasilkan kesalahan sintaksis.
Saya ingin melakukan sesuatu seperti
command && echo "Ok, continuing" || echo "Check internet connection"; exit 1
yang hanya keluar jika tidak ada koneksi internet.
command-line
bash
Thomas Weller
sumber
sumber
()
dan{}
.Jawaban:
Menggunakan parens menempatkan perintah dalam subkulit yang tidak selalu seperti yang Anda inginkan. Atau, gunakan kurung kurawal:
Kuncinya di sini adalah bahwa, tidak seperti parens, perintah terakhir dalam kawat gigi harus diikuti oleh
;
.Mengapa titik koma atau baris baru diperlukan
Kurung kurawal adalah argumen yang valid untuk suatu perintah. Sebagai contoh, berikut adalah kurung kurawal sebagai argumen untuk
echo
:Akibatnya, jika shell melihat:
Shell menafsirkan command1 sebagai tidak memiliki argumen dan command2 memiliki satu argumen yang terdiri dari karakter
}
. Kurung kurawal}
hanya diartikan sebagai penutupan grup jika mengikuti tanda titik koma atau baris baru. Untuk membuat pekerjaan di atas:Subshell dan perbedaan antara
{...}
dan(...)
Perhatikan bahwa set berikut
x
ke 10 tetapi pengaturan itu dilupakan sebelumecho
perintah dijalankan:Sebaliknya, dengan kawat gigi keriting, pengaturannya
x=10
diingat:Perbedaannya adalah karena tugas variabel dalam subkulit tidak bertahan setelah subkulit selesai.
Dokumentasi
Dari
man bash
:sumber