如果命令傳回非零退出代碼,則提供預設值

如果命令傳回非零退出代碼,則提供預設值

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

相關內容