Dalam Memulai Pemrograman Linux buku. Ada bagian tentang Blok Pernyataan . Pada Bagian tersebut penjelasannya terlihat seperti berikut ini.
Blok Pernyataan
Jika Anda ingin menggunakan beberapa pernyataan di tempat yang hanya diperbolehkan satu, seperti dalam daftar DAN atau ATAU,
Anda bisa melakukannya dengan mengapitnya dalam kurung {} untuk membuat blok pernyataan. Misalnya, lihat kode berikut:
get_confirm && {
grep −v "$cdcatnum" $tracks_file > $temp_file
cat $temp_file > $tracks_file
echo
add_record_tracks
}
Tolong jelaskan bagaimana kode dieksekusi di blok pernyataan…
Jawaban yang Diterima:
Kode di dalam { ... }
jalankan persis seperti yang akan dieksekusi tanpa kurung kurawal, kecuali sekarang tergantung pada status keluar dari get_confirm
.
Jika get_confirm
keluar dengan status keluar nol (“berhasil”), blok dijalankan, jika tidak.
Ini setara dengan
if get_confirm; then
# the contents of the block goes here
fi
(yang menurut saya terlihat lebih bagus)
Contoh buku adalah IMHO bukan contoh yang baik dari penggunaan umum { ... }
. Contoh yang lebih baik adalah
{ echo 'hello world'; date; } >file
yang menggunakan pengalihan tunggal untuk mengarahkan output standar dari kedua perintah di { ... }
blokir ke file yang sama.
Ini mirip dengan (dan memiliki efek yang sama, dalam hal ini, sebagai)
( echo 'hello world'; date ) >file
tetapi pernyataan di dalam { ... }
dieksekusi di lingkungan yang sama dengan shell, sedangkan pernyataan di ( ... )
dieksekusi dalam subkulit (lingkungan terpisah).
Anda dapat melihat perbedaannya dengan
{ a=42; }; echo $a
dan
( a=1973 ); echo $a
Yang pertama akan menampilkan 42
sedangkan yang kedua tidak akan menampilkan 1973
(penugasan terjadi dalam subkulit dan tidak dapat memengaruhi lingkungan di luar).
Pemberitahuan tentang tata bahasa:}
closing penutup dari sebuah { ... }
blok harus mengikuti baris baru atau ;
. { echo 'hello' }
tidak valid, sedangkan keduanya { echo 'hello'; }
dan
{
echo 'hello'
}
adalah.