web-dev-qa-db-ja.com

コマンドがゼロ以外の終了コードで戻る場合のデフォルト値を提供する

ファイルconfigにいくつかの設定があり、そのファイルをcatしたいと思います。ただし、configが存在しない場合もあります。この場合、コマンドにデフォルト値を出力させたいのですが。

おそらく次のように機能したもの:

$ ls
$ cat config || echo 42
42
$ echo 73 > config
$ cat config || echo 42
73
6
Cory Klein

あなたの構成は大丈夫です。あなたは何かをすることさえできました

cat config || cat defaultconfig

ランダムコマンド(コメントの./get_config_from_webなど)を使用する場合は、コマンドが適切な戻りステータスを提供することを確認する必要があります。これはトリッキーになる可能性があります。シェルスクリプトは最後に実行されたコマンドの結果を返すだけです。何か他の結果が必要な場合は、exitを実行する必要があります。

3
vonbrand

以下は、キャッチされていないエラー条件に対して42をエコーし​​ます。

trap "echo 42" ERR

これを構成可能な変数にすることができます:

trap 'echo "${CONFIG:=42}"' ERR  # if $CONFIG is not set, it will be defaulted to 42
2
DopeGhoti
if [ -a config ]; then cat config; else echo ${DEFAULT};fi

変数DEFAULTがあらかじめ何かに設定されていると仮定します。

0
MelBurslan

Ifステートメントで終了コードを使用できます。

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

前のコマンドが成功すると、「0」の値で終了します。したがって、他の出口(失敗)では、「VALUE」にあるものは何でも出力することを伝えています。

0
Kip K