次の行if [ -z "$xyz" ]
とがあるシェルスクリプトがありますif [ -n "$abc" ]
が、それらの目的はわかりません。誰でも説明できますか?
次の行if [ -z "$xyz" ]
とがあるシェルスクリプトがありますif [ -n "$abc" ]
が、それらの目的はわかりません。誰でも説明できますか?
回答:
ここで、bashの演算子に関する非常に良いリファレンスを見つけることができます。別のシェルを使用している<my shell> operators
場合は、検索するだけで必要なものがすべて見つかります。あなたの特定のケースでは、次を使用しています:
-n
string is not null.
-z
string is null, that is, has zero length
説明する:
$ foo="bar";
$ [ -n "$foo" ] && echo "foo is not null"
foo is not null
$ [ -z "$foo" ] && echo "foo is null"
$ foo="";
$ [ -n "$foo" ] && echo "foo is not null"
$ [ -z "$foo" ] && echo "foo is null"
foo is null
man test
またはman [
、コマンドをテストするためのすべてのオプションを提供します。この場合、-nは$ abcのコンテンツの長さがゼロ以外かどうかをテストし、-zは$ xyzのコンテンツが長さゼロの文字列かどうかをテストします。
man test
(常に?)は、外部プログラムバージョンのマニュアルページを提供します。(少なくともGNU-coreutilsバージョンの場合)一部の(IMEの)シェルには異なるバージョンが組み込まれていることを明示的に警告します。