如何在一行中设置带有条件的变量值?

e-i*_*128 2 linux bash operators

有这个:

DATABASE_HOST=[ $# -le 3 ] && $3 || '127.0.0.1';
Run Code Online (Sandbox Code Playgroud)

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

db.sh user dbname hostname
Run Code Online (Sandbox Code Playgroud)

我想替换我的旧方法:

if [ $# -le 3 ]
then
    DATABASE_HOST=$3;
else
    DATABASE_HOST='127.0.0.1';
fi
Run Code Online (Sandbox Code Playgroud)

anu*_*ava 7

你可以用这个 BASH 结构来缩短它:

DATABASE_HOST="${3:-127.0.0.1}"
Run Code Online (Sandbox Code Playgroud)

根据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.
Run Code Online (Sandbox Code Playgroud)