![[[ $variable ]]と[[ -n $variable ]]の違いは何ですか?](https://linux33.com/image/28446/%5B%5B%20%24variable%20%5D%5D%E3%81%A8%5B%5B%20-n%20%24variable%20%5D%5D%E3%81%AE%E9%81%95%E3%81%84%E3%81%AF%E4%BD%95%E3%81%A7%E3%81%99%E3%81%8B%EF%BC%9F.png)
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
非常に古いシェルに移植したい場合は、最も信頼できる方法です。
答え2
~によるとBashの長さがゼロ以外の文字列をテストします。 [ -n “$var” ] または [ “$var” ]、はい、同じです。
変数名を引用しても同じです。
重要事項:私が引用した質問名はにのみ言及されていますが、答えは両方を[
考慮したものです。[
[[