我的文件中有一些配置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”中的任何内容。