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

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

我正在編寫一個腳本來創建來源環境。處理 PATH 部分很簡單。那麼,當程式的路徑被加入PATH中時,如何​​檢查它是否可以正確執行?使用which是不夠的,因為它只是檢查可執行檔是否存在,而不是運行它。我現在得到的是檢查程式的版本(即find -version)並檢查返回訊息是否包含“ command not found”。這並不理想。有一個更好的方法嗎?

答案1

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

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

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

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

答案2

您可以使用-x 操作員測試檔案上是否設定了可執行標誌。但它不會告訴您可執行檔是否會實際運行。

相關內容