gpt4 book ai didi

bash - bash echo 命令可以返回非零退出代码吗?

转载 作者:行者123 更新时间:2023-11-29 08:56:12 25 4
gpt4 key购买 nike

如标题所说,在 bash/sh 中是否存在 echo 将以非零值退出的情况?

代码示例。

until monitor_thing_happens; do
test $retry_counter -eq 0 && echo "thing didn't happen" && exit 1
let "retry_counter--"
echo "tries remaining: ${retry_counter}"
sleep 5
done

在上面的示例中,如果 echo 以非零值退出,&& 逻辑就会中断,我们永远不会退出 1,并且会一直循环下去。 echo 可以非零退出的任何危险/边缘情况?

最佳答案

是的,如果出现写入错误,echo 会返回非零状态。

引用 bash 手册:

'echo'

echo [-neE] [ARG ...]

Output the ARGs, separated by spaces, terminated with a newline. The return status is 0 unless a write error occurs.

演示:

$ cat foo.bash
#!/bin/bash

echo hello
echo "The echo command returned a status of $?" > /dev/tty
$ ./foo.bash > /dev/full
./foo.bash: line 3: echo: write error: No space left on device
The echo command returned a status of 1
$

/dev/full 是一个设备,与 /dev/zero 类似,除了任何写入它的尝试都会失败并返回 ENOSPC 错误。

关于bash - bash echo 命令可以返回非零退出代码吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36651786/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com