如何在尝试调用不存在的脚本时阻止bash报告错误?

时间:2014-03-26 20:40:18

标签: bash unix

我正在用bash编写一个简单的脚本来检查当前系统上是否安装了一堆依赖项。我的脚本尝试使用-h标志运行示例脚本,greps输出样本脚本预期返回的关键字,因此知道是否在系统上安装了示例脚本。 / p>

然后我通过基本上说sample scripts = OKsample scripts = FAIL的条件语句传递这个。但是,如果未在系统上安装示例脚本,则bash会抛出警告-bash: sample_script: command not found。如何防止这种情况发生?我尝试使用1>& 2错误重定向,但警告仍然出现在屏幕上(我希望在运行我的脚本时,OK/FAIL输出文本显示在用户的屏幕上。)

感谢您的任何建议!

4 个答案:

答案 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)

我使用此功能独立于whichwhencetype -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 "$@"