2
A
回答
3
1
修訂
嘗試
[ -x "$executable" ] && echo "Command '$executable' not found" >&2 && exit 1
這將寫入錯誤到stderr和退出1個退出代碼。
如果您只有實用程序的名稱您可以使用type
內建程序檢查其路徑。
實施例:
type type
type ls
type xls
輸出:
type is a shell builtin
ls is /usr/bin/ls
./test.sh: line 13: type: xls: not found
測試返回1,如果沒有找到效用。
所以如果$executable
可以是任何東西(一個bash內置的,別名,二進制,...),那麼這可以用於:
type -p ls>/dev/null && ls -l
type -p xls>/dev/null && xls --some_arg
這將運行ls
(任何可執行文件),但不是xls。
無論如何,如果在腳本中沒有設置execfail
選項(shopt
),那麼腳本將在聲明bash: some_utility: command not found
錯誤消息後退出。如果設置了該選項,則繼續。但你可以trap
僞信號ERR
做什麼,你需要:
shopt -s execfail
fnc() { echo $?, $_, Oops;}
trap fnc ERR
ls -d *|head -2
xls
yls
輸出:
a1
a2
./test_tLcn.sh: line 8: xls: command not found
127, xls, Oops
./test_tLcn.sh: line 9: yls: command not found
127, yls, Oops
4
如果沒有找到命令,退出狀態應該是127.但是,你可能會使用bash
4或更高版本,並具有定義的稱爲command_not_found_handle
的功能。如果找不到命令,則調用此函數,並且它可能會退出0,屏蔽127代碼。
運行type command_not_found_handle
將顯示定義該函數的定義。您可以通過運行unset command_not_found_handle
來禁用它。
相關問題
- 1. 錯誤:=:找不到命令(bash腳本)
- 2. Bash腳本說找不到命令?
- 3. Bash shell腳本:f:找不到命令
- 4. Bash腳本「命令未找到錯誤」
- 5. bash腳本:命令沒有找到
- 6. 在Docker bash腳本中運行時找不到命令
- 7. AIX 6.1如果在Bash腳本中找不到命令
- 8. 在bash腳本中找不到命令錯誤
- 9. cd命令不bash腳本
- 10. mysqldump bash腳本停止在密碼「找不到命令」
- 11. bash腳本命令沒有找到 - 命令正確實施
- 12. Bash腳本將不起作用:找不到命令
- 13. 命令在命令行中找到但在腳本中找不到
- 14. 在Git Bash中找不到javac命令
- 15. bash找不到HTK命令
- 16. BASH - 找不到xargs命令
- 17. 命令在$()中在bash腳本中
- 18. 不能grep命令resultats在bash腳本
- 19. java運行bash腳本,找不到命令
- 20. grep和cut bash腳本:找不到命令
- 21. 命令存在,但在bash腳本沒有找到
- 22. 在bash腳本中傳遞scala命令
- 23. date命令在bash shell腳本中
- 24. 在bash腳本中執行sed命令
- 25. 在bash腳本中使用find命令
- 26. 在bash腳本中的讀命令
- 27. 在bash腳本中執行Postgresql命令
- 28. 在bash腳本中運行hadoop命令
- 29. bash腳本+ grep + perl命令
- 30. PostgreSQL命令fom bash腳本
的[檢查程序從一個bash腳本存在(HTTP可能重複/stackoverflow.com/questions/592620/check-if-a-program-exists-from-a-bash-script) – blong