我想运行如下脚本:
对于“猫”中的我;做 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
以非零退出状态退出。