Bash
執行命令並將所有內容儲存到bash中的變數
在我正在開發的 bash 腳本中,我正在嘗試執行命令並擷取變數:
- 標準輸出
- 標準錯誤
- 狀態碼
如何做到這一點?該命令是
tar
,如果它有任何意義。我嘗試了最標準的方法:
TAROUTPUT=$(tar -cf arch.tar /path/to/dir)
根據我所做的一些工作(我實際上並沒有產生
tar
失敗),我只得到了標準輸出,標準錯誤沒有儲存到變數中。完美的解決方案有TAROUTPUT
(使用標準輸出和標準錯誤)和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}"
- 1>/tmp/tar_stdout :將
stdout
輸出保存到臨時文件。- 2>/tmp/tar_stderr : 將
stderr
輸出保存到文件。- 命令的返回碼(退出狀態)保存到
${?}
變數中。