Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux bash-是否有pipefail自动处理程序?_Linux_Bash_Shell_Scripting_Sh - Fatal编程技术网

Linux bash-是否有pipefail自动处理程序?

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

我在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.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是一个因素,因为它不是一个管道