Bash 在它被管道传输到while之后,如何返回错误级别($?)?
在bash中,我试图制作一个脚本,该脚本如下所示:Bash 在它被管道传输到while之后,如何返回错误级别($?)?,bash,while-loop,errorlevel,Bash,While Loop,Errorlevel,在bash中,我试图制作一个脚本,该脚本如下所示: echo hi | while read line; do echo $line; done & 将返回0 假设第一个脚本不知怎么搞砸了: ech hi | while read line; do echo $line; done & 仍将返回0 如何返回该错误?Bash内部变量$PIPESTATUS执行此操作。它是一个数组,包含最后执行的管道中命令的退出状态。管道中的第一个命令是$PIPESTATUS[0],等等: $ ech hi |
echo hi | while read line; do echo $line; done
&
将返回0
假设第一个脚本不知怎么搞砸了:
ech hi | while read line; do echo $line; done
&
仍将返回0
如何返回该错误?Bash内部变量
$PIPESTATUS
执行此操作。它是一个数组,包含最后执行的管道中命令的退出状态。管道中的第一个命令是$PIPESTATUS[0]
,等等:
$ ech hi | while read line; do echo $line; done
-bash: ech: command not found
$ echo ${PIPESTATUS[0]} ${PIPESTATUS[1]}
127 0
$ echo hi | while read line; do ech $line; done
-bash: ech: command not found
$ echo ${PIPESTATUS[0]} ${PIPESTATUS[1]}
0 127
$ echo hi | while read line; do echo $line; done
hi
$ echo ${PIPESTATUS[0]} ${PIPESTATUS[1]}
0 0
谢谢你,伙计。我是说。更新了更多的信息/准确度。如果这已经足够了,请考虑接受我的回答。
echo $?
$ ech hi | while read line; do echo $line; done
-bash: ech: command not found
$ echo ${PIPESTATUS[0]} ${PIPESTATUS[1]}
127 0
$ echo hi | while read line; do ech $line; done
-bash: ech: command not found
$ echo ${PIPESTATUS[0]} ${PIPESTATUS[1]}
0 127
$ echo hi | while read line; do echo $line; done
hi
$ echo ${PIPESTATUS[0]} ${PIPESTATUS[1]}
0 0