GNU/Linux >> Belajar Linux >  >> Linux

Mekanisme Blok Pernyataan Dalam Scripting Shell?

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.


Linux
  1. Bagaimana Mengurai Json Dengan Shell Scripting Di Linux?

  2. Bagaimana Membandingkan String di Bash Shell Scripting

  3. Simbol Backtick (`) di Linux Shell Scripting

  1. Deskriptor File &Skrip Shell?

  2. Menampilkan Konten Bernilai Tertinggi Dalam Scripting Shell?

  3. Haruskah Saya Menggunakan Apt Atau Apt-get Di Shell Scripting?

  1. Skrip shell Linux:nomor hex ke string biner

  2. Temukan dan ganti dalam skrip shell

  3. Apa itu penggunaan () dalam skrip shell?