Bash

執行命令並將所有內容儲存到bash中的變數

  • May 22, 2018

在我正在開發的 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輸出保存到文件。
  • 命令的返回碼(退出狀態)保存到${?}變數中。

引用自:https://unix.stackexchange.com/questions/444935