
次のように、出力を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
、ここでは実際の問題ではありません。