の略! -ジ

の略! -ジ

選択肢を探しています:

local foo=""

if [[ ! -z "$foo" ]]; then
  echo "foo is actually not empty."
fi

不正に変数が定義されているか(空でないか)確認する方法はありますか?

答え1

isの逆であるか、単に演算子を使用しないことです。-z word-n wordword

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

関連情報