Saya memiliki skrip shell yang berisi berikut ini:
case $1 in
0 )
echo $1 = 0;
OUTPUT=3;;
1 )
echo $1 = 1;
OUTPUT=4;;
2 )
echo $1 = 2;
OUTPUT=4;;
esac
HID=$2;
BUNCH=16;
LR=.008;
Adalah titik koma benar-benar berlebihan dalam cuplikan di atas? Dan adakah alasan bagi sebagian orang untuk menggunakan titik koma ganda?
Tampaknya titik koma hanyalah pemisah, sesuatu yang akan Anda gunakan sebagai ganti baris baru.
Menurut
man bash
:Jadi,
;
bisa metacharacter atau operator kontrol, sedangkan yang;;
selalu menjadi operator kontrol (dalam perintah kasus).Dalam kode khusus Anda, semua
;
di akhir baris tidak diperlukan. The;;
diperlukan namun.sumber
;
dan;;
, lalu? Saya tidak cukup paham dengan penguraian sintaks BASH untuk mengetahui perbedaan praktis antara apa yang disebut BASH sebagai "metacharacter" dan apa yang disebut "operator kontrol".Dalam kasus khusus dari find,
;
digunakan untuk menghentikan perintah yang dipanggil oleh -exec. Lihat jawaban @kenorb untuk pertanyaan ini .sumber
@ Opensourcebook-Amit
baris baru setara dengan titik koma tunggal
;
pada terminal atau dalam skrip shell.Lihat contoh di bawah ini:
Di terminal:
Pada skrip shell:
Tapi saya tidak setuju dengan komentar yang
&
setara dengan baris baru atau titik koma tunggal&
adalah menjalankan perintah di latar belakang juga merupakan pemisah perintah tetapi tidak berfungsi sebagai titik koma atau baris baru.sumber
@Ignacio V-Abrams
Sebenarnya ini tidak sepenuhnya akurat, titik koma tunggal di akhir baris tidak berlebihan dan jelas tidak sama dengan baris baru.
Dari Bash Reference Manual
Perintah yang dipisahkan oleh "baris baru" mungkin dijalankan secara paralel ketika perintah yang dipisahkan oleh titik koma selalu dijalankan secara berurutan
sumber
A sequence of one or more newlines may appear in a list to delimit commands, equivalent to a semicolon.
Jadi apa yang Anda kutip tentang titik koma berlaku sama untuk baris baru.&
bukan\n
. Dalam sebuah komentar disebutkan dia dapat melewati titik koma karena ternyata,&
juga merupakan pemisah perintah seperti;
dan\n
.