Bash

如果命令輸出失敗,如何將命令輸出儲存為變數,同時出錯?

  • January 6, 2022

我正在嘗試基於命令變數執行 if 語句,例如:

ssh_location=$(which ssh)

我的問題是,我只想在系統上存在它時才儲存它,這樣我就可以對二進製文件進行進一步處理,否則我想回顯一個錯誤字元串。這就是我正在嘗試但沒有運氣的方法:

if ["$ssh_location"] ; then
   echo "it exists"
else 
   echo "does not exist"
fi

我不斷收到此錯誤消息:

./test.sh: line 6: [/usr/local/bin/ssh]: No such file or directory
does not exist

(它肯定存在)。

您沒有檢查文件是否存在,而是嘗試使用["$ssh_location"]不存在的路徑執行命令。

檢查文件是否存在的語法是:

if [ -f "$ssh_location" ]

您缺少括號內的空格(是的,它們是必需的)和-f. 如果沒有,-f您將評估ssh命令的返回碼。

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