Saya telah melihat konstruksi ini dalam skrip banyak dan menggunakannya sendiri, tetapi saya merasa terganggu karena saya tidak dapat menemukannya dalam dokumentasi.
Contoh:
[ -f file1 ] &&
[ -f file2 ] &&
echo "Both files exist." ||
echo "One or the other file doesn't exist."
Ini juga bisa dilakukan dengan garis miring terbalik sebelum baris baru, sebagaimana disebutkan dalam man bash
:
If a \<newline> pair appears, and the backslash is not
itself quoted, the \<newline> is treated as a line continuation (that
is, it is removed from the input stream and effectively ignored).
Contoh:
[ -f file1 ] && \
[ -f file2 ] && \
echo "Both files exist." || \
echo "One or the other file doesn't exist."
... tapi ini sepertinya tidak perlu. Versi pertama di atas berfungsi bahkan tanpa garis miring terbalik.
Di mana saya dapat menemukan ini man bash
? (Juga, apakah ini bash
khusus atau POSIX?)
bash
shell-script
Wildcard
sumber
sumber
;
,&
,(
dan)
.names=( Rama Soma<newline> Sita Diya )
. Python jelas menggambarkan ini di sini tetapi dokumentasi Bash sepertinya tidak.Jawaban:
Baris baru diabaikan dalam beberapa konteks di mana secara nyata ada perintah yang tidak ditentukan. Konteks ini termasuk setelah operator control (
&&
,||
,|
,&
,;
,;;
, tapi tidak!
).Saya tidak melihat ini didokumentasikan dalam manual bash.
Di POSIX, itu ditentukan melalui aturan tata bahasa . Di mana pun aturan memiliki
linebreak
, Anda dapat memiliki nol atau lebih jeda baris.sumber
|
di awal baris berikutnya? Ingat, shell juga digunakan secara interaktif, tidak hanya dalam skrip, dan tata bahasanya sama.this && this2 && that
baik-baik saja tetapi untukelse
klausa saya akan menggunakan yang sebenarnyaif then else fi
.)