bash - 文字列の長さが0(ゼロ以外)の場合は真ですか? [コピー]

bash - 文字列の長さが0(ゼロ以外)の場合は真ですか? [コピー]
# touch $$
# gzip $$
# gzip --test $$.gz
# echo $?
0
# OUT=$(gzip --test $$.gz)
# echo $OUT

# if [ -z $OUT ] ; then echo $$ ; fi
26521
# if [ -n $OUT ] ; then echo $$ ; fi
26521
# 

~からbash(1)

   -z string
          True if the length of string is zero.
   string
   -n string
          True if the length of string is non-zero.

混乱しています。どのようにゼロになりますか?そして同時にゼロではありませんか?キーに値(使用済み)があるかどうかを確認するにはbash

ベストアンサー1

[ .. ]他のすべてのコマンドと同じ規則に従います。噴射適用可能です。OUT空または設定されていない場合は、空の引数で$OUTなくても何も拡張されません。

したがって、および[ -n $OUT ]に展開され、空の文字列ではないかどうかをテストします。はい、テストはtrueを返します。[-n][-n

$OUT他の場所と同様に見積もりが必要です。

if [ -n "$OUT" ]; then ...

望むより:いつ二重引用符が必要ですか? そしてテストと条件BashGuideから。

おすすめ記事