我遇到了一个 bash 文件,里面有类似这样的内容
MYVAR := SomeVal
我知道在阅读一些教程后,你会这样设置值
MYVAR = SomeVal
以上两者有何区别?
答案1
你可能看到过参数扩展设置默认值。
区别在于变量是否未设置或者是否设置为空值:
当变量未设置时,没有区别
$ unset MYVAR; : ${MYVAR:=SomeVal}; echo "$MYVAR" SomeVal $ unset MYVAR; : ${MYVAR=SomeVal}; echo "$MYVAR" SomeVal
当变量有值时,没有区别
$ MYVAR="foo"; : ${MYVAR:=SomeVal}; echo "$MYVAR" foo $ MYVAR="foo"; : ${MYVAR=SomeVal}; echo "$MYVAR" foo
当变量具有空值时:
$ MYVAR=""; : ${MYVAR:=SomeVal}; echo "$MYVAR" SomeVal $ MYVAR=""; : ${MYVAR=SomeVal}; echo "$MYVAR" # empty line