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