選択肢を探しています:
local foo=""
if [[ ! -z "$foo" ]]; then
echo "foo is actually not empty."
fi
不正に変数が定義されているか(空でないか)確認する方法はありますか?
答え1
isの逆であるか、単に演算子を使用しないことです。-z word
-n word
word
foo=x
if [[ "$foo" ]] ; then
echo "foo is not empty"
fi
この方法では、NULL値と未設定値の間をテストすることはできません。あなたが必要とするもの${foo+x}
:[[ "${foo+x}" = x ]]
どんな場合でも置く値、さらに空の文字列まで。
-z
、-n
標準テストにも使用できますが、[ .. ]
必要ありません[[ .. ]]
。ここでの違いは、内部[ .. ]
変数を引用する必要があることです。
答え2
var=''
var2='foo'
e () { test ${#1} -gt 0; }
e "$var" && echo true || echo false
false
e "$var2" && echo true || echo false
true