抑制 shell 脚本中的错误

抑制 shell 脚本中的错误

我想运行如下脚本:

对于“猫”中的我;做
result=command $i |awk '{print $2}' ## 它可能会给我们确切的答案或错误,例如“命令未找到”
回显“$i - $结果”  
完毕

对于每个$i,我想打印:

$i - $result # 如果成功
$i - NO RESULT # 如果我收到命令未找到错误

答案1

while read -r cmd; do
    result=$( command $cmd 2>/dev/null || echo "Just a boring error" )
    printf '%s\t- %s\n' "$cmd" "$result"
done

Read 将从 shell 的标准输入中逐行读取。如果您尝试使用for cmd in $(cat),则该cat进程需要在循环的任何部分运行之前退出。通过上述循环,每次迭代都是在行到达标准输入时完成的。

result变量将获得命令替换的输出。命令替换将返回命令的输出,或者echo如果命令$cmd以非零退出状态退出。

相关内容