我知道${var:-word}
和${var-word}
之间的区别,但我没有看到在this condition中使用默认值的目的:
[ -z "${NVM_PROFILE-}" ]
答案 0 :(得分:1)
我喜欢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
答案 1 :(得分:1)
如果使用nounset
或set -u
启用set -o nounset
选项,[ -z "$NVM_PROFILE" ]
如果NVM_PROFILE
未设置则会导致错误。使用-
或:-
明确地将未设置的变量展开为空字符串可以避免该错误。
使用set -u
的替代方法是明确检查变量是否已设置。 (这适用于zsh
和bash
。)
[[ ! -v NVM_PROFILE || -z $NVM_PROFILE ]]