次のような非常にシンプルなスクリプトがあります。
#!/bin/bash
VAR1="$1"
MOREF='sudo run command against $VAR1 | grep name | cut -c7-'
echo $MOREF
このスクリプトをコマンド ラインから実行し、引数を渡しても、出力は得られません。ただし、$MOREF
変数内に含まれるコマンドを実行すると、出力が得られます。
スクリプト内で実行する必要があるコマンドの結果を取得し、それを変数に保存し、その変数を画面に出力するにはどうすればよいですか?
ベストアンサー1
バックティックに加えて`command`
、コマンド置換$(command)
または を使用すると"$(command)"
、読みやすくなり、ネストも可能になります。
OUTPUT=$(ls -1)
echo "${OUTPUT}"
MULTILINE=$(ls \
-1)
echo "${MULTILINE}"
複数行の変数値を保存するには、引用符 ( "
) が重要です。代入の右側ではオプションです。単語分割は行われないなのでOUTPUT=$(ls -1)
問題なく動作するでしょう。