"test -n && echo notempty" は "notempty" を出力します。これが予想される動作ですか?

次の行を実行するとき

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文字列として使用されます。

おすすめ記事