Saya baru-baru ini melihat beberapa kode yang membingungkan saya karena berfungsi dan saya tidak mengharapkannya. Kode dikurangi menjadi contoh ini
#!/bin/bash
for var;
do
echo "$var"
done
Saat dijalankan dengan argumen baris perintah adalah mencetaknya
$ ./test a b c
a
b
c
Inilah ini, yang (bagi saya) tidak terduga. Mengapa ini tidak menghasilkan kesalahan karena var
tidak terdefinisi? Apakah menggunakan ini dianggap sebagai 'praktik yang baik'?
sumber
Ini adalah perilaku default, ya. Hal ini didokumentasikan dalam
help
darifor
kata kunci:Jadi, ketika Anda tidak memberikan daftar untuk beralih lagi, itu akan default untuk beralih lagi,
$@
array parameter posisi (a
,b
danc
dalam contoh Anda).Dan perilaku ini didefinisikan oleh POSIX jadi ya, itu dianggap "praktik yang baik" sejauh itu.
sumber