我有一个bash脚本,可以执行各种操作,例如脚本中的示例:
scp $workdir/$site$dom.conf root@$srv13:$workdir
scp $workdir/$site$dom.conf root@$srv179:$workdir
ssh root@$srv13 "hostname ; service httpd restart"
ssh root@localhost "hostname ; service httpd restart"
ssh root@$srv179 "hostname ; service httpd restart"
ssh root@$srv201 "hostname ; service named restart"
我想返回一些“操作成功”的指示,但我想确保所有操作都成功完成。通常我会用,if [ $? = 0 ]; then...
但是我想知道是否还有其他方法可以这样做,因为编写5xif's
似乎并不像“最少的管理工作”。那么,还有另一种方法可以批量检查这5个操作的退出代码吗?
如果任何操作失败都需要失败,则只需set -e
在脚本顶部执行。然后,一旦任何步骤失败,它将失败。
如果您对任何单个步骤失败都可以,但是只想跟踪失败次数,则可以尝试以下操作:
success_count=0
scp $workdir/$site$dom.conf root@$srv13:$workdir && success_count=$((success_count+1))
scp $workdir/$site$dom.conf root@$srv179:$workdir && success_count=$((success_count+1))
ssh root@$srv13 "hostname ; service httpd restart" && success_count=$((success_count+1))
ssh root@localhost "hostname ; service httpd restart" && success_count=$((success_count+1))
ssh root@$srv179 "hostname ; service httpd restart" && success_count=$((success_count+1))
ssh root@$srv201 "hostname ; service named restart" && success_count=$((success_count+1))
echo "Num ops succeeded = $success_count"
您甚至可以将其拉入功能,例如:
exec_with_count() {
"$@" && success_count=$((success_count+1))
}
exec_with_count scp $workdir/$site$dom.conf root@$srv13:$workdir
exec_with_count scp $workdir/$site$dom.conf root@$srv179:$workdir
...
echo "Num ops succeeded = $success_count"
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句