我正在用bash编写一个简单的脚本来检查当前系统上是否安装了一堆依赖项。我的脚本尝试使用-h
标志运行示例脚本,greps输出样本脚本预期返回的关键字,因此知道是否在系统上安装了示例脚本。 / p>
然后我通过基本上说sample scripts = OK
或sample scripts = FAIL
的条件语句传递这个。但是,如果未在系统上安装示例脚本,则bash会抛出警告-bash: sample_script: command not found
。如何防止这种情况发生?我尝试使用1>& 2错误重定向,但警告仍然出现在屏幕上(我希望在运行我的脚本时,OK/FAIL
输出文本显示在用户的屏幕上。)
感谢您的任何建议!
答案 0 :(得分:3)
如果你只想抑制错误(stderr)并让你回显(stdout)的“OK”或“FAIL”通过,你会这样做:
./yourscript.sh 2> /dev/null
虽然更好的方法是在尝试执行之前测试sample_script是否可执行。例如:
if [ -x "$script" ]; then
*do whatever generates FAIL or OK*
fi
答案 1 :(得分:1)
@devnull dixit
command -h 2>/dev/null
答案 2 :(得分:0)
我使用此功能独立于which
,whence
,type -p
以及诸如此类:
pathto () {
DIRLIST=$(echo "$PATH"|tr : ' ')
for e in "$@"; do
for d in $DIRLIST; do
test -f "$d/$e" -a -x "$d/$e" && echo "$d/$e"
done
done
}
如果可以找到(并且可执行), pathto script
将回显完整路径。返回0或1而不是作为练习: - )
答案 3 :(得分:0)
for bash:
if ! type -P sample_script &> /dev/null; then
echo Error: sample_script is not installed. Come back later. >&2
exit 1
fi
sample_script "$@"