-z
以下のコードのフラグはどういう意味ですか?
if [ -z $TEST_PARAM ]; then
そのようなフラグのリストはありますか?
このようなロゴの場合はls -l
どこで見つけることができるかを知っていますが、単一のロゴの場合はこれを説明するウェブサイトはありません。
答え1
答え2
[
はこのユーティリティの別の名前ですtest
。これらの間の唯一の違いは、[
最後に追加のパラメータが必要であることです。]
ほとんどのシステムには、マニュアルページと同じ内容[
のマニュアルページがありますtest
。
[
ほとんどのシェルには機能が組み込まれているため、test
マニュアルページに記載されている正確な機能は、シェルで実際に使用できる機能とは若干異なる場合があります。-z
ただし、これはすべての実装で使用できる標準機能です。test
などの演算子を見つけるには、組み込み関数の説明または条件式セクションを探します-z
。
このコマンドは[ -z $TEST_PARAM ]
実際になければなりません[ -z "$TEST_PARAM" ]
。二重引用符の外側の変数拡張は、変数拡張よりもはるかに多くの操作を実行するためです。バラよりスペースやその他の特殊文字が原因でシェルスクリプトが停止するのはなぜですか?詳細については。引用符がない場合、値はTEST_PARAM
単語に分割され、グローバルパターンに展開されます。代わりに"$TEST_PARAM"
変数の値に展開されますTEST_PARAM
。 thenの値がTEST_PARAM
空の場合、$TEST_PARAM
ゼロ単語リストに展開されるため、実行されるコマンドはです[ -z ]
。条件式を表現するには、1つの単語のみを使用してください。単語が空でない場合、条件はtrueです。これは-z
演算子ではなく空でない文字列です。
また、見ることができますシングルまたはダブルカッコの使用 - bash
答え3
これは、「パラメータが存在しない場合は次のことを行います」を意味します。
以下で見ることができます:
$ ABC='1'
$
$ if [ -z $ABC ]; then echo "ABC"; # Nothing
fi;
$
$ if [ -z $XYZ ]; then echo "yes"; # echo "Yes"
fi;
yes
$
これを使用する例は私の.bashrc
ファイルから呼び出すことですが、tmux
次のように再帰的に呼び出すことはありません。
[ -z $TMUX ] && export TERM=xterm-256color && exec tmux