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

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

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

也许是这样工作的:

$ ls
$ cat config || echo 42
42
$ echo 73 > config
$ cat config || echo 42
73

答案1

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

cat config || cat defaultconfig

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

答案2

对于任何未捕获的错误情况,以下内容将回显 42:

trap "echo 42" ERR

您可以将其设为可配置变量:

trap 'echo "${CONFIG:=42}"' ERR  # if $CONFIG is not set, it will be defaulted to 42

答案3

if [ -a config ]; then cat config; else echo ${DEFAULT};fi

假设变量 DEFAULT 已预先设置为某值。

答案4

您可以在 if 语句中使用退出代码:

#!/bin/bash
cat config
if [[ "$?" -ne "0" ]]; then
    echo "VALUE"
fi

如果上一个命令成功,它将以“0”值退出。所以你告诉它,在任何其他退出(失败)时,它将输出“VALUE”中的任何内容。

相关内容