コマンドの出力を変数に設定する

コマンドの出力を変数に設定する

次のように、出力をhead -15 textfile.txt変数に入れてコマンド$Xで使用するにはどうすればよいでしょうか。if

 if $X = 'disabled' then

?

答え1

x="$(head -15 testfile.txt)"
if [ "$x" = disabled ]
then
    echo "We are disabled"
fi

通常、コマンドからの出力をシェル変数にキャプチャする場合は、次の形式を使用します。 variable="$(command args ...)"variable=部分は代入です。 の$(...)部分はコマンド置換です。

ifまた、シェルは という形式の文を実行しないことにも注意してくださいif $X = 'disabled'。シェルは の後にコマンドが続くものと想定し、そのコマンドの戻りコードを評価します。上記のケースでは、またはとして記述できる コマンドをif実行します。testtest ...[ ... ]

多くの人は、シェル スクリプトでは小文字の変数を使用するのがベスト プラクティスであると考えています。これは、システム定義の変数が大文字であるため、誤って上書きされないようにするためです。一方、システム変数は呼び出されないのでX、ここでは実際の問題ではありません。

関連情報