Linux bash-是否有pipefail自动处理程序?
我在shell脚本的顶部放了下面两行,这样它在出现任何错误时都会退出Linux bash-是否有pipefail自动处理程序?,linux,bash,shell,scripting,sh,Linux,Bash,Shell,Scripting,Sh,我在shell脚本的顶部放了下面两行,这样它在出现任何错误时都会退出 set -e set -o pipefail 然后,我将我的shell脚本称为: chmodu+x/tmp/install_master.sh/tmp/install_master.sh&>/tmp/logs/install_master.log 如果我想在脚本退出时随非0一起发送日志,那么这样解释返回代码是最好的方法吗 chmod u+x /tmp/install_master.sh;/tmp/install_master
set -e
set -o pipefail
然后,我将我的shell脚本称为:
chmodu+x/tmp/install_master.sh/tmp/install_master.sh&>/tmp/logs/install_master.log
如果我想在脚本退出时随非0一起发送日志,那么这样解释返回代码是最好的方法吗
chmod u+x /tmp/install_master.sh;/tmp/install_master.sh &>> /tmp/logs/install_master.log; rc=$? if [ rc -ne 0 ]; then aws s3 sync /tmp/logs/install_master.log s3://somewhere/; fi
或者我可以使用内置的pipefail触发器吗?而不是“如果”可以使用逻辑运算符
chmod u+x /tmp/install_master.sh &> /tmp/logs/install_master.log && \
/tmp/install_master.sh &>> /tmp/logs/install_master.log || \
aws s3 sync /tmp/logs/install_master.log s3://somewhere/
假设
install_master.sh
在失败时返回非零退出状态,则可以使用| |检查非零退出状态
chmodu+x/tmp/install_masther.sh
/tmp/install_master.sh&>/tmp/logs/install_master.log|{
aws s3 sync/tmp/logs/install_master.log s3://某处/
}
我不认为pipefail是一个因素,因为它不是一个管道