web-dev-qa-db-ja.com

環境変数に基づく条件付き割り当て

Bashスクリプトでは、値が外部のグローバル環境変数($MYAPP_ENV)に依存するように、ローカル変数を割り当てています。

if [ "$MYAPP_ENV" == "PROD" ]
then
    [email protected]
else
    [email protected]
fi

上記の割り当てを書くためのより短い(まだクリーン)方法はありますか? (おそらく何らかの条件演算子/インラインifを使用しています。)

11
Jonik

これを行うには、bashでケース/スイッチを使用することもできます。

case "$MYAPP_ENV" in
 PROD) SERVER_LOGIN="[email protected]" ;;
    *) SERVER_LOGIN="[email protected]" ;;
esac

またはこの方法:

[ "$MYAPP_ENV" = PROD ] &&
   [email protected] ||
   [email protected]
17
slm

試してください:

[ condition ] && var=value_when_true || var=value_when_false

割り当てが数値の場合、bashの3項演算を使用できます。

(( assign_condition ? value_when_true : value_when_false ))
9
cuonglm

&&および||演算子

[ "$MYAPP_ENV" == "PROD" ] && [email protected] || [email protected]
4
MBR