2017-05-15 11 views
0

testを調べるには、sytaxを角括弧[]で調べてみてください。0以外のフラグでテストを使用する方法-n

試験のマンページは-nが文字列の長さがゼロでないかどうかを確認するために使用することができると述べている:文字列の長さがゼロの場合

反対 -z
-n STRING 
       the length of STRING is nonzero 

は、TIのチェックを使用することができます。

-z STRING 
       the length of STRING is zero 

Iがゼロの長さと一つの長さを有する第二の可変barを有する空の変数fooと例をcrated方法test作品を理解する:

$ export foo 
$ export bar=1 
$ [ -n $bar ] ; echo $? 
0 
$ [ -n $foo ] ; echo $? 
0 
$ [ -z $bar ] ; echo $? 
1 
$ [ -z $foo ] ; echo $? 
0 

-nの最初の2つのテストは、結果として両方ともゼロであることを示しています。私は最初のテストではゼロになり、2番目のテストではゼロになることを提案しました。 2番目のテストは示唆された結果を示します。

+3

変数を引用するか、[[]]'を使用してください。 '-n $ foo'は' -n'に展開され、 '-n'でテストする文字列として' [] 'によって見られます。 '[-n" -n "]' – 123

答えて

1

次のことを試してみてください。

[ -n "$foo" ] ; echo $? 

$ fooが空の文字列であるので、

[ -n $foo ] # without quotes 

は次のようになります。

[ -n ] 

マニュアルテスト(1)言葉:

STRING equivalent to -n STRING 

[-n "]]と似ていませんが、[" -n "]のように扱われます。

関連する問題