2013-07-23 20 views
5

set -u, başvurulan herhangi bir ilişkisiz değişken varsa komut dosyası başarısız olacağını biliyorum, ancak benim bash komut dosyasında, ben bir şey yapmadan önce belirli bir değişkenin bir if deyiminin içinde bulunup bulunmadığını kontrol ediyorum. böylece:Bir değişkenin bozuk olup olmadığını nasıl kontrol ederim VE bash prelüdümde -u set -u kullanın?

-bash: SOME_VARIABLE: unbound variable 

[Process completed] 
: benim başlangıcı içinde set -eu yukarıdaki çalıştırmayı denerseniz

if [[ -z "${SOME_VARIABLE}" ]] ; then 
    echo '$SOME_VARIABLE' is not set 
else 
    do_stuff_with_SOME_VARIABLE 
fi 

Ancak, biraz mantığa aykırı benim yapmaya çalıştığım şey bu verilen görünüyor aşağıdaki hatayı olsun

Gördüğünüz gibi, aslında '$SOME_VARIABLE'u kullanmaya çalışmıyorum' unset, bu yüzden bilmek istediğim, eğer (ben bunları argüman olarak iletmek veya onlara dize manipülasyonları uygulamak gibi) unset değişkenlerini kullanmaya çalıştığımda betiğin başarısız olmasının bir yolu var mı? sadece unsetilmediklerini görmek için mi kontrol ediyorlar? null

if [ -z "${SOME_VARIABLE:-}" ]; then 
    echo '$SOME_VARIABLE' is not set 
else 
    do_stuff_with_SOME_VARIABLE 
fi 

Bu genişletir $SOME_VARIABLE:

cevap

7

Bir genişleme kullanabilirsiniz. Parametre yerine koyma hakkında daha fazla bilgi edinin here (en yakın ${parameter:-default} bölümüne bakın)

+0

Sadece mükemmel. – kevinarpe

İlgili konular