私が開発しているbashスクリプトでは、コマンドを実行して変数にキャプチャしようとしています:
それを達成する方法?意味がある場合、コマンドはtar
です。
私は最も標準的なアプローチを試しました:
TAROUTPUT=$(tar -cf Arch.tar /path/to/dir)
私が行ったいくつかの作業に基づいて(実際にtar
エラーを生成していません)stdoutのみを取得します。stderrは変数に格納されません。完璧なソリューションには、TAROUTPUT
(stdout&stderrの両方を含む)およびTARSTATUS
変数があります。
前もって感謝します。
TAROUTPUT=$(tar -cf Arch.tar /path/to/dir 2>&1)
this_is_the_tar_exit_code=$?
stdout
をstderr
から分離する場合:
craft@engine:~$ tar -cf Arch.tar /path/to/dir 1>/tmp/tar_stdout 2>/tmp/tar_stderr; RETCODE=$( echo ${?} );
craft@engine:~$ stdout_var=$( cat /tmp/tar_stdout )
craft@engine:~$ stderr_var=$( cat /tmp/tar_stderr )
craft@engine:~$ echo -e "STDOUT : ${stdout_var}\nSTDERR : ${stderr_var}\nCommand Status: ${RETCODE}"
stdout
出力を一時ファイルに保存します。stderr
出力をファイルに保存します。${?}
変数に保存されます。