我知道 和 之间的区别${var:-word}
,${var-word}
但我看不出在这种情况下使用默认值的目的:
[ -z "${NVM_PROFILE-}" ]
- 为什么那里需要一个空的默认值?
- 是否与与其他外壳(zsh)的兼容性有关?
我知道 和 之间的区别${var:-word}
,${var-word}
但我看不出在这种情况下使用默认值的目的:
[ -z "${NVM_PROFILE-}" ]
我喜欢set -u
。
$ sh -c '[ -z "NVM_PROFILE" ] && echo empty'
empty
$ sh -c 'set -u; [ -z "$NVM_PROFILE" ] && echo empty'
sh: NVM_PROFILE: unbound variable
$ sh -c 'set -u; [ -z "${NVM_PROFILE-}" ] && echo empty'
empty
如果使用或nounset
启用该选项,如果未设置将导致错误。使用or将未设置的变量显式扩展为空字符串可以避免该错误。set -u
set -o nounset
[ -z "$NVM_PROFILE" ]
NVM_PROFILE
-
:-
使用的替代方法set -u
是显式检查变量是否已设置。(这适用于zsh
和bash
。)
[[ ! -v NVM_PROFILE || -z $NVM_PROFILE ]]