$() 実行の出力表示

$() 実行の出力表示

なしで実行した次のコマンドがありますが、$()リモートスクリプトの戻りコードをキャプチャするには、このコマンドを実行する必要があります。問題は、私がcat見なければコマンド出力を見ることができないということです。実行中に出力を表示できますか?

set -o pipefail
COMMAND=$(ssh ${RMT_HOST} ${RMT_DIR}/${SCRIPT_NAME} ${ARGUMENTS} < /dev/null |& tee -a ${RMT_EXEC_LOG})
RETCODE=$?

編集する なぜ使用するのかを明確にするために$() ここリンクです

答え1

あなたの質問実際に問題は、「プロセスの出力をどのようにキャプチャして表示するのですか?」です。正しい方向に進んでいますが、tee他の人が指摘したように、後で終了コードを確認すると、その$?プロセスの終了コードを取得できます。コマンドteeとコマンド以外のコードの終了コードはそれを通して実行されます。

出力を保存して後で見るのは簡単ですが、終了コードをすぐにキャプチャする必要があります。一時ファイルを使用して出力を別々に処理することをお勧めします。

scratch="$(mktemp)"
trap 'rm -fr "$scratch"' EXIT
--SOME LONG COMMAND-- > "$scratch"
returncode=$?
--HANDLER FOR RETURNCODE--
cat "$scratch" >> /path/to/persistent_logfile

関連情報