"echo || true"有什么用?

Aki*_*ira 9 linux bash shell sh

为什么有人想拥有像这样的代码echo "something" || true

/lib/lsb/init-functions在Ubuntu 14.04的第92行找到了这样的用法:

echo "$pid" || true

我明白了|| 代表OR.但我找不到一种让echo产生除零之外的任何退出代码的方法.即使它确实如此,谁在乎呢?

我的意思是,使用前缀|| true确保退出代码始终为0.因此,如果双管的左侧产生与0不同的任何内容,则将执行true并导致整行产生0.

为什么妄想与退出代码的简单回声?是否有任何检查是否每条线路都能/lib/lsb/init-functions成功完成?

anu*_*ava 2

为什么对退出代码产生偏执

我相信这是为了避免脚本由于可能使用以下内容而退出:

set -e
Run Code Online (Sandbox Code Playgroud)

在脚本开始时,否则会导致脚本退出。

  • 如果标准输出上存在 I/O 错误,例如,如果它被重定向到不存在的目录中的文件或重定向到“/dev/full”,则“echo”可能会失败。 (7认同)
  • @gniourf_gniourf:我正在考虑 `echo ... > /no/such/dir/foo.txt`,但是如果脚本的输出以这种方式重定向,那么它就不会运行,并且 `echo` 命令永远不会被处决。 (2认同)
  • @Akira,在 `>/dev/full` 的情况下,失败的不是重定向,而是重定向后的写入。并且 `1>&-` 关闭操作将成功,而其后的 write() 将失败。 (2认同)