Unix

Unix如何判斷一個程序是否可以執行

  • September 13, 2013

我正在編寫一個腳本來創建源環境。處理 PATH 部分很容易。雖然我應該如何檢查將路徑添加到 PATH 中的程序是否可以正確執行?使用which是不夠的,因為它只是檢查執行檔的存在,而不是執行它。我現在得到的是檢查程序的版本(即find -version)並檢查返回消息是否包含“ command not found”。這並不理想。有一個更好的方法嗎?

我認為沒有理想的方式來做你想做的事。正如馬丁所說,您可以檢查可執行位是否已設置,但這並不能確認它是否會實際執行。

您可以做的一件事是嘗試執行程序,而不是從程序本身中查找特定文本,而是查看$?變數。這將返回程序的退出狀態(通常為 0 表示 OK)或(在 CentoOS 系統上我必須手頭)127 表示找不到文件,例如

find --version
if [[ $? == 127 ]]
then
   exit 1
fi

沒有理想方法的原因是 OK 的退出狀態為 0 只是正常的,如果程序執行但遇到錯誤,它們可能會返回不同的退出狀態。這可能對您有用,直到某些東西執行並返回退出狀態 127 以指示某些錯誤情況。

引用自:https://serverfault.com/questions/538667