コマンドから標準出力を変数に取得する方法

コマンドから標準出力を変数に取得する方法

sshの標準出力が何であるかを知りたい場合は、次のようにします。

ssh  $linux_server "cat /proc/uptime"

[[ $? -eq 0 ]] && ssh is ok

しかし、次のような場合、ssh の標準出力をどのように知ることができますか?

 UPTIME=`    ssh $linux_server "cat /proc/uptime"  `

答え1

ほとんどのシェルでこれを行う標準的な方法 (したがって最も移植性が高い方法) は、バッククォート (`) を使用することです。ssh に必要な引数は引用符で囲む必要はありませんが、結果はおそらく次のように記述することになります。

UPTIME="`ssh $linux_server cat /proc/uptime`"

または、次のように $() を使用して、bash (および他のいくつかのシェル、ただしバッククォートほど汎用的ではありません) に特化することもできます。

UPTIME="$(ssh $linux_server cat /proc/uptime$)"

バッククォートはコマンドを区切るために同じものを使用するため、ネストできないことに注意してください。これは bash 構造の利点の 1 つです。また、実行を少し効率化するためにサブシェルをフォークする必要もありません。

詳細については、bash のマニュアル ページを参照してください。

関連情報