Saya ingin memastikan bahwa pada titik tertentu skrip, setelah source
memasukkan file konfigurasi, beberapa variabel ditetapkan dan, jika tidak, untuk menghentikan eksekusi, memberi tahu pengguna tentang variabel yang hilang. saya telah mencoba
for var in $one $two $three ; do
...
tetapi jika misalnya $two
tidak disetel, loop tidak pernah dieksekusi untuk $two
. Hal berikutnya yang saya coba adalah
for var in one two three ; do
if [ -n ${!var} ] ; then
echo "$var is set to ${!var}"
else
echo "$var is not set"
fi
done
Tetapi jika dua tidak diatur, saya masih mendapatkan "dua diatur ke" bukannya "dua tidak diatur".
Bagaimana saya bisa memastikan bahwa semua variabel yang diperlukan ditetapkan?
Pembaruan / Solusi: Saya tahu bahwa ada perbedaan antara "set" dan "set, tetapi kosong". Saya sekarang menggunakan (terima kasih kepada /programming//a/16753536/3456281 dan jawaban untuk pertanyaan ini) berikut ini:
if [ -n "${!var:-}" ] ; then
jadi, jika var
disetel tetapi kosong, itu masih dianggap tidak valid.
set -u
ke awal skrip Anda untuk segera menghentikannya ketika variabel yang tidak disetel digunakan.