if 条件で '-z "${line}"' の意味

if 条件で '-z "${line}"' の意味

次のコードのif条件で、-z "${line}"はどういう意味ですか?

while read line
do
if [ -z "${line}" ]; then
echo "file empty "
exit
fi
done < $FILE

if条件が正確に何を確認しているか教えてください。

答え1

変数$line(ここでは同じ${line})が空であること(文字を含まない)をテストします。readジョブがファイルの終わりに達すると、この状況が発生します。

その後のコメントでは、それが何zに使用されたか(何を意味するのか)尋ねました。これ[演算子に対応test便利、POSIX ステートメント

-z ひも
文字列stringの長さがTrueの場合若い;そうでなければ偽です。

したがって、-z最初はニーモニック値のために選択されたでしょう。最も古いバージョンでは使用できません。test(Unix 7th, 1979)に登場したが、8版(1985):

-z s1    true if the length of string s1 is zero.

バージョン7には文書化されていませんが、同じ時期に3BSDに登場したため(CSRG CD1の1979年2月ファイル)、BSDから出てきたようです。

すべてのオプションがtest文字と意味の間に明確な関係を持つわけではありません。この単語は早く出てくるので、意味に関連する文字を選択してください。

関連情報