如何从Bash脚本中检查程序是否存在?我将如何验证一个程序是否存在,或者返回一个错误并退出,或者继续执行这个脚本?这看起来应该很容易,但它一直在阻挠我。
3 回答
慕姐8265434
TA贡献1813条经验 获得超2个赞
回答
command -v <the_command>
bash
hash <the_command> # For regular commands. Or...type <the_command> # To check built-ins and keywords
解释
which
hash
, type
command
许多操作系统都有一个 which
那,那个 甚至不设置退出状态
,意思是 if which foo
甚至不会在那里工作 总
报告 foo
存在,即使它不存在(请注意,一些POSIX shell似乎是这样做的。) hash
)。 许多操作系统 which
做一些定制和邪恶的事情,比如改变输出,甚至连接到包管理器。
which
$ command -v foo >/dev/null 2>&1 || { echo >&2 "I require foo but it's not installed. Aborting."; exit 1; }$ type foo >/dev/null 2>&1 || { echo >&2 "I require foo but it's not installed. Aborting."; exit 1; }$ hash foo 2>/dev/null || { echo >&2 "I require foo but it's not installed. Aborting."; exit 1; }
2>&-
2>/dev/null
2>&-
/bin/sh
type
hash
hash
type
command
bash
type
hash
type
-P
PATH
hash
gdate
date
:
gnudate() { if hash gdate 2>/dev/null; then gdate "$@" else date "$@" fi}
大话西游666
TA贡献1817条经验 获得超14个赞
添加回答
举报
0/150
提交
取消