以下のようなかなりシンプルなスクリプトを作成しました。
#!/bin/bash
VAR1="$1"
MOREF='sudo run command against $VAR1 | grep name | cut -c7-'
echo $MOREF
このスクリプトをコマンドラインから実行し、引数を渡しても、何も出力されません。 しかし、$MOREF
変数に含まれるコマンドを実行すると、出力を得ることができます。
スクリプト内で実行する必要のあるコマンドの結果を変数に保存し、その変数を画面に出力するにはどうしたらよいでしょうか。
バックティック
に加えて、command
$(command)
または"$(command)"
を使うことができます。これは読みやすく、ネストも可能です。
OUTPUT="$(ls -1)"
echo "${OUTPUT}"
MULTILINE=$(ls \
-1)
echo "${MULTILINE}"
引用符("
)は、複数行の値を保持するために重要です。
正しい方法は
$(sudo run command)
アポストロフィーを使う場合には、'
ではなく、```が必要です。この文字は「バックティック」(または「グレイブ・アクセント」)と呼ばれます。
こんな感じで。
#!/bin/bash
VAR1="$1"
VAR2="$2"
MOREF=`sudo run command against "$VAR1" | grep name | cut -c7-`
echo "$MOREF"