1. ホーム
  2. bash

[解決済み] Bashでコマンドの出力に変数を設定するにはどうすればよいですか?

2022-03-18 04:07:05

質問

以下のような、かなりシンプルなスクリプトがあります。

#!/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}"

引用元 ( " を維持するために重要です。 複数行の変数値 のように、代入の右側では省略可能です。 単語分割は行われません ということで OUTPUT=$(ls -1) であれば、問題なく動作します。