Bash

如果命令返回非零退出程式碼,則提供預設值

  • February 12, 2016

我在文件中有一些配置,config並且想要cat那個文件。然而,有時config並不存在。在這種情況下,我想讓我的命令輸出一個預設值。

也許像這樣工作的東西:

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

你的構造很好。你甚至可以做類似的事情

cat config || cat defaultconfig

如果您使用一些隨機命令(如./get_config_from_web註釋中的),則必須確保該命令確實給出了合理的返回狀態。這可能很棘手,shell 腳本只返回執行的最後一個命令的結果,exit如果您想要其他結果,則必須執行 a。

對於任何未擷取的錯誤情況,以下將回顯 42:

trap "echo 42" ERR

您可以將其設為可配置變數:

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

引用自:https://unix.stackexchange.com/questions/261831