Bash'te bir değişkenin boş olup olmadığını belirlemenin en iyi yolu nedir ("")?
if [ "x$variable" = "x" ]` yapmamın önerildiğini duydum.
Bu doğru yol mu? (daha anlaşılır bir şey olmalı)
Bu, bir değişken ayarlanmamışsa veya boş dizeye ("") ayarlanmışsa true değerini döndürür.
if [ -z "$VAR" ];
-z
en iyi yoldur.
Kullandığım diğer bir seçenek de bir değişken ayarlamaktır, ancak bu değişken başka bir değişken tarafından geçersiz kılınabilir, örn.
export PORT=${MY_PORT:-5432}
Eğer $MY_PORT
değişkeni boşsa, PORT
5432 olarak ayarlanır, aksi takdirde PORT MY_PORT
değerine ayarlanır. İki nokta üst üste ve tire içeren sözdizimine dikkat edin.
Set-empty ve unset durumlarını ayırt etmekle ilgileniyorsanız, bash için -u seçeneğine bakın:
$ set -u
$ echo $BAR
bash: BAR: unbound variable
$ [ -z "$BAR" ] && echo true
bash: BAR: unbound variable
$ BAR=""
$ echo $BAR
$ [ -z "$BAR" ] && echo true
true