bash 文件中变量与 : 和 := 之间的区别

bash 文件中变量与 : 和 := 之间的区别

我遇到了一个 bash 文件,里面有类似这样的内容

MYVAR := SomeVal

我知道在阅读一些教程后,你会这样设置值

MYVAR = SomeVal

以上两者有何区别?

答案1

你可能看到过参数扩展设置默认值。

区别在于变量是否未设置或者是否设置为空值:

  1. 当变量未设置时,没有区别

    $ unset MYVAR; : ${MYVAR:=SomeVal}; echo "$MYVAR"
    SomeVal
    $ unset MYVAR; : ${MYVAR=SomeVal}; echo "$MYVAR"
    SomeVal
    
  2. 当变量有值时,没有区别

    $ MYVAR="foo"; : ${MYVAR:=SomeVal}; echo "$MYVAR"
    foo
    $ MYVAR="foo"; : ${MYVAR=SomeVal}; echo "$MYVAR"
    foo
    
  3. 当变量具有空值时:

    $ MYVAR=""; : ${MYVAR:=SomeVal}; echo "$MYVAR"
    SomeVal
    $ MYVAR=""; : ${MYVAR=SomeVal}; echo "$MYVAR"
    # empty line
    

相关内容