次の行を実行するとき
test -n && echo not empty
「空ではない」を印刷します。これは、空の変数があり、nullでないことをテストし、値を引用することを忘れたときに発生します。
VAR=
test -n $VAR && echo wrong 1
test -n "$VAR" && echo wrong 2
これが予想される動作ですか?
ベストアンサー1
はい、これは予想される動作です。 1つの引数だけに渡されると、test
長さの確認が行われます。からman bash
:
test と [ 引数の数に応じて、一連の規則を使用して条件式を評価します。
引数0:式が偽です。
パラメーター 1: パラメーターが空でない場合のみ、式は true です。
つまり、本質的には同じですtest foo
が-n
文字列として使用されます。