Unix
Unix如何判斷一個程序是否可以執行
我正在編寫一個腳本來創建源環境。處理 PATH 部分很容易。雖然我應該如何檢查將路徑添加到 PATH 中的程序是否可以正確執行?使用
which
是不夠的,因為它只是檢查執行檔的存在,而不是執行它。我現在得到的是檢查程序的版本(即find -version
)並檢查返回消息是否包含“command not found
”。這並不理想。有一個更好的方法嗎?
我認為沒有理想的方式來做你想做的事。正如馬丁所說,您可以檢查可執行位是否已設置,但這並不能確認它是否會實際執行。
您可以做的一件事是嘗試執行程序,而不是從程序本身中查找特定文本,而是查看
$?
變數。這將返回程序的退出狀態(通常為 0 表示 OK)或(在 CentoOS 系統上我必須手頭)127 表示找不到文件,例如find --version if [[ $? == 127 ]] then exit 1 fi
沒有理想方法的原因是 OK 的退出狀態為 0 只是正常的,如果程序執行但遇到錯誤,它們可能會返回不同的退出狀態。這可能對您有用,直到某些東西執行並返回退出狀態 127 以指示某些錯誤情況。