質問: bashでコマンドの出力に変数を設定するにはどうすればいいですか? 私は次のようなものである非常に単純なスクリプトを持っています:#!/bin/bash var1="$1" moref='sudo run command against $var1 | grep name | cut -c7-' echo $moref このスクリプトをコマンドラインから実行して引数を渡しても、何も出力されません。しかし、$moref変数に含まれているコマンドを実行すると、出力を取得できます。スクリプト内で実行する必要があるコマンドの結果を取得し、それを変数に保存してから、その変数を画面に出力するにはどうすればよいでしょうか。
回答: 複数行/複数コマンドで実行したい場合は、次のようにします。output=$( bash <<eof #multiline/multiple command/s eof ) またはoutput=$( #multiline/multiple command/s ) 例:#!/bin/bash output="$( bash <<eof echo first echo second echo third eof )" echo "$output" 出力:first second third heredoc を使用すると、長い1行のコードを複数行に分割することで、物事を簡単に単純化できます。もう一つの例:output="$( ssh -p $port $user@$domain <<eof #breakdown your long ssh command into multiline here. eof )"