Variables 相当于bash';s集-u

Variables 相当于bash';s集-u,variables,powershell,Variables,Powershell,通常,bash用空字符串替换未定义的变量: $ echo "$BLAH things after blah" things after blah 但有一种简便的方法可以改变这种行为: $ set -u $ echo "$BLAH things after blah" sh.exe": BLAH: unbound variable (请原谅exe。我在MSYS bash下运行。)我将此放在所有bash脚本的顶部。(快速失败是件好事,诸如此类。) PowerShell的行为通常与bash相同:

通常,bash用空字符串替换未定义的变量:

$ echo "$BLAH things after blah"
 things after blah
但有一种简便的方法可以改变这种行为:

$ set -u
$ echo "$BLAH things after blah"
sh.exe": BLAH: unbound variable
(请原谅
exe
。我在MSYS bash下运行。)我将此放在所有bash脚本的顶部。(快速失败是件好事,诸如此类。)

PowerShell的行为通常与bash相同:

PS C:\> echo "$blah things after blah"
 things after blah

我的问题:PowerShell中是否有任何东西会改变此行为,从而在尝试使用未初始化的变量时导致错误?

这应该可以做到:

set-strictmode -version 2.0

理论上,
setpsdebug-Strict
可以做到这一点,但它似乎不适用于字符串扩展。嗯……@TrevorSullivan字符串插值主要是为了使两个命令之间的行为一致。(bash删掉了“things”前面的空格,没有它。)我仍然想要一些可以用于字符串插值的东西,但这确实有很大帮助。谢谢很高兴听到这有帮助!看起来其他人有更好的答案。“禁止没有名称的变量”甚至不知道这是可能的。Lol直到有人问我这个问题之前,我也没有这样做:)我们现在可以使用
Set-StrictMode-Version 3.0
(与2.0相比)来另外“禁止越界或无法解析的数组索引”。这
Set-u
也可以做到。