如果命令以非零退出代码返回,则提供默认值

Cor*_*ein 6 shell bash cat exit-status

我在文件中有一些配置config并且想要cat那个文件。然而,有时config并不存在。在这种情况下,我想让我的命令输出一个默认值。

也许像这样工作的东西:

$ ls
$ cat config || echo 42
42
$ echo 73 > config
$ cat config || echo 42
73
Run Code Online (Sandbox Code Playgroud)

von*_*and 5

你的构造很好。你甚至可以做一些像

cat config || cat defaultconfig
Run Code Online (Sandbox Code Playgroud)

如果您使用一些随机命令(如./get_config_from_web注释中的命令),您必须确保该命令确实给出了合理的返回状态。exit这可能很棘手,shell 脚本只返回最后执行的命令的结果,如果您想要其他结果,则必须执行 a 。

  • 啊! 我可以将 stderr 通过管道传输到 `/dev/null` 并且它可以工作: `cat config 2> /dev/null || 回声42`。 (3认同)