nicholas.alipaz
nicholas.alipaz

Reputation: 505

BASH: Does it support conditional variables like var="test"?"1":"2"

I am new to bash but have done lots of PHP, and Javascript.

Is there some sort of equivilent to this PHP?

$default = 10;
$var = (!$var) ? $default : $var;

Thanks

Upvotes: 8

Views: 4810

Answers (3)

paxdiablo
paxdiablo

Reputation: 882028

Yes, it does:

var=${var:-10}

Even with other variables:

unset var
export def=99
echo ${var:-${def}} # gives '99'
export var=7
echo ${var:-${def}} # gives '7'

Upvotes: 12

DigitalRoss
DigitalRoss

Reputation: 146123

$ default=10
$ var=${var:-$default}
$ echo $var
10
$ var=9
$ var=${var:-$default}
$ echo $var
9

Upvotes: 2

bstpierre
bstpierre

Reputation: 31226

Yes!

From the man page:

${parameter:-word}
      Use  Default  Values.  If parameter is unset or null, the expansion of word
      is substituted.  Otherwise, the value of parameter is substituted.
${parameter:=word}
      Assign Default Values.  If parameter is unset or null, the expansion of word
      is assigned to  parameter. The  value  of  parameter is then substituted.
      Positional parameters and special parameters may not be assigned to in this way.
${parameter:?word}
      Display Error if Null or Unset.  If parameter is null or unset, the expansion of word (or a message  to
      that effect if word is not present) is written to the standard error and the shell, if it is not inter‐
      active, exits.  Otherwise, the value of parameter is substituted.
${parameter:+word}
      Use Alternate Value.  If parameter is null or unset, nothing is substituted, otherwise the expansion of
      word is substituted.

Upvotes: 6

Related Questions