Shell 管道的退出状态
程序员文章站
2022-07-10 08:20:28
...
管道命令的退出状态是由最后一条命令的退出状态。
如果通过 set 命令设置了 pipefail 选项,那么只要有一条命令退出状态非0,那么管道的退出状态就是这个命令的退出状态,否则退出状态为0.
ls hello | echo "hello"
echo "\$? = $?"
如果文件 hello 不存在,那么退出状态为0。
set -o pipefail
ls hello | echo "hello"
echo "\$? = $?"
如果文件 hello 不存在,退出状态为 ls hello
命令的退出状态值(非0)。
不过需要状态,如果开启了 pipefail 选项,那么会影响全局,如果不再需要这个选项的功能,记得关闭它,如下
# 开启
set -o pipefail
ls hello | echo "hello"
echo "\$? = $?"
# 关闭
set +o pipefail
参考
https://www.gnu.org/software/bash/manual/bash.html#Pipelines
上一篇: shell编程---退出状态
下一篇: Python之re(正则表达式)模块详解
推荐阅读
-
php 读取shell管道传输过来的内容_PHP教程
-
一个shell for循环与case结合的脚本(监控程序状态)
-
Shell脚本监控服务器在线状态和邮件报警的方法
-
shell脚本运行5秒后自动退出的代码
-
Linux下shell脚本监控Tomcat的状态并实现自动启动的步骤
-
Shell编程中的特殊变量之进程状态变量介绍
-
Linux编程 22 shell编程(输出和输入重定向,管道,数学运算命令,退出脚本状态码)
-
exit(-1)或者return(-1)shell得到的退出码为什么是255
-
linux shell通过curl获取HTTP请求的状态码
-
一个shell for循环与case结合的脚本(监控程序状态)