Bir komut dosyasının belirli bir noktasında source, bir yapılandırma dosyası girdikten sonra , birkaç değişkenin ayarlandığından ve yürütülmediyse, kullanıcıya eksik değişken hakkında bilgi verdiğinden emin olmak istiyorum. denedim
for var in $one $two $three ; do
...
ancak örneğin $twoayarlanmazsa, döngü hiçbir zaman çalıştırılmaz $two. Bir sonraki denediğim şey
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
Ama iki ayarlanmadıysa, hala "iki ayarlanmadı" yerine "iki ayarlandı" alıyorum.
Gerekli tüm değişkenlerin ayarlandığından nasıl emin olabilirim?
Güncelleme / Çözüm: "set" ve "set ama boş" arasında bir fark olduğunu biliyorum. Şimdi ( /programming//a/16753536/3456281 ve bu sorunun cevapları sayesinde ) aşağıdakileri kullanıyorum:
if [ -n "${!var:-}" ] ; then
Bu nedenle, varayarlanmış ancak boşsa, yine de geçersiz kabul edilir.
set -u, ayarlanmamış bir değişken kullanıldığında komut dosyasını hemen sonlandırmak için komut dosyanızın başına ekleyebilirsiniz .