我正在运行几个 bash 命令,想检查它们是否最后都成功运行了。我该怎么做?
这是我尝试的。
$ man # command 1 with exit status 1
What manual page do you want?
$ res1=$? # command 2 with exit status 0
# this also stores exit code of previous code i.e 1
$ res2=$? # storing exit code of previous command i.e 0
# Now I want to check if all previous commands worked fine with their exit codes
$ echo $res1 && $res
1
0: command not found
我目前的方法有什么错误。或者应该怎么做才正确?有没有更好的方法可以将其推广到最后 k 个命令。
提前致谢。
答案1
我也遇到了一些问题
我会用这种方法解决我的问题
首先,我编写了一个函数来检查我在脚本中运行的命令的状态
function show_process_status() {
if [ $? == 0 ]; then
echo $1
else
echo $2
break
fi
}
然后在我的脚本中,我在运行任何命令之后调用此函数,例如:
function update_system (){
echo "start updating system"
sudo apt-get update -y
show_process_startus "repos updated successful" "An error occurred on updating repos"
if [[ $1 == "full" ]]; then
sudo apt-get dist-upgrade -y
show_process_startus "system updated successful" "An error occurred on updating systems"
elif [[ $1 == "fix" ]]; then
sudo apt-get update --fix-missing
show_process_startus "update fix missing successful" "An error occurred on fix missing"
sudo apt-get update
fi
}
在show_process_status
函数中我得到了两个参数,第一个参数在代码运行并成功退出时打印,第二个参数在命令退出不成功时使用。