コマンド出力を変数に設定 [冗長]

コマンド出力を変数に設定 [冗長]

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シェルはコマンドの戻りコードを評価します。上記の例では、test私が実行したコマンドはまたはtest ...で書くことができます[ ... ]

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

関連情報