Linux shell variables set default values

${var:-default}

  1. var is empty, use default as the return value.
    var will not be set, var value will not be changed.
  2. var is not empty, returns the value of var.
$ echo ${msg}

$ echo ${msg:-hello}
hello
$ echo ${msg}

${var:+default}

  1. var is empty, no-op.
  2. var is not empty, return value default. Does not change the var value.
$ unset msg
$ echo $msg

$ echo ${msg:+world}

$ msg=hello
$ echo $msg
hello
$ echo ${msg:+world}
world
$ echo $msg

${var:=default}

  1. If var is empty, the return value is default; at the same time, if the value of var is set to default, var is modified.
  2. var is not empty, returns the value of var and will not be modified.
$ echo $msg

$ echo ${msg:=hello}
hello
$ echo ${msg}
hello
$ echo ${msg:=world}
hello

${var:?error_message}

  1. If var is empty, print an error prompt error_message.
  2. var is not empty, returns the var value.
$ echo ${msg}
hello
$ echo ${msg?'Error: msg is not set! '}
hello
$ echo ${message}

$ echo ${message?'Error: message is not set! '}
bash: message: Error: message is not set! 

In bash, the middle ':' can be omitted.

Guess you like

Origin blog.csdn.net/yinminsumeng/article/details/129162552