如何在一行中使用条件设置变量值?

时间:2016-04-30 15:26:04

标签: linux bash operators

有这个:

DATABASE_HOST=[ $# -le 3 ] && $3 || '127.0.0.1';

但不起作用。是一个带有3个可选参数的bash脚本:

db.sh user dbname hostname

我想替换旧方法:

if [ $# -le 3 ]
then
    DATABASE_HOST=$3;
else
    DATABASE_HOST='127.0.0.1';
fi

1 个答案:

答案 0 :(得分:4)

您可以使用此BASH构造缩短它:

DATABASE_HOST="${3:-127.0.0.1}"

根据man bash

${parameter:-word}
  Use Default Values.  If parameter is unset or null, the expansion of word is substituted. 
  Otherwise, the value of parameter is substituted.