[[ $variable ]]と[[ -n $variable ]]の違いは何ですか?

[[ $variable ]]と[[ -n $variable ]]の違いは何ですか?

bashでは[[ $variable ]][[ -n $variable ]]全く同じですか?以下の出力の場合のようですが、シェルスクリプトでは両方の使用形態が広く使用されていることがわかりました。

$ z="abra"
$ [[ $z ]]
$ echo $?
0
$ [[ -n $z ]]
$ echo $?
0
$ z=""
$ [[ $z ]]
$ echo $?
1
$ [[ -n $z ]]
$ echo $?
1
$ unset z
$ [[ $z ]]
$ echo $?
1
$ [[ -n $z ]]
$ echo $?
1

ベストアンサー1

[ "$var" ][ -n "$var" ]現在bashとほとんどのシェルと同じです。他の古いシェルでは同じですがさまざまなエラーに苦しむたとえば、 "$var" の一部の特殊値の場合、=または 。(!

より鮮明に発見したのは[ -n "$var" ]ペンダントでした[ -z "$var" ]

[[ -n $var ]][[ $var ]]非標準 ksh 構文を実装するすべてのシェルと同じです。

test "x$var" != x非常に古いシェルに移植したい場合は、最も信頼できる方法です。

おすすめ記事