PowerShell 字符串格式在函数内的不同行为
PowerShell string format different behaviour within function
在使用 powershell 时,我很难从两个变量建立文件名。当我最初创建 powershell 脚本时,它运行良好。现在我尝试将一些可重复的步骤移动到函数中,但字符串行为不同。
MWE:
$topa = "ABC"
$topb = "XYZ"
function Test-Fun{
param(
$a,
$b
)
echo "$($a)H$($b).csv"
}
echo "$($topa)H$($topb).csv"
Test-Fun($topa, $topb)
我系统上的输出是
ABCHXYZ.csv
ABC XYZH.csv
最初,我想使用下划线而不是 H,并认为这会导致问题,但事实并非如此。我错过了什么,或者更确切地说,函数内和函数外的字符串扩展有什么区别?
你叫 Test-Func
错了。 $topa
之后的逗号将创建一个数组,因此您基本上将 []"ABC"、"XYZ" 作为 数组 传递给 $a
。在那种情况下 $b
是空的!
您可以通过 删除逗号 轻松解决此问题(括号也不是必需的):
Test-Fun $topa $topb
在使用 powershell 时,我很难从两个变量建立文件名。当我最初创建 powershell 脚本时,它运行良好。现在我尝试将一些可重复的步骤移动到函数中,但字符串行为不同。
MWE:
$topa = "ABC"
$topb = "XYZ"
function Test-Fun{
param(
$a,
$b
)
echo "$($a)H$($b).csv"
}
echo "$($topa)H$($topb).csv"
Test-Fun($topa, $topb)
我系统上的输出是
ABCHXYZ.csv
ABC XYZH.csv
最初,我想使用下划线而不是 H,并认为这会导致问题,但事实并非如此。我错过了什么,或者更确切地说,函数内和函数外的字符串扩展有什么区别?
你叫 Test-Func
错了。 $topa
之后的逗号将创建一个数组,因此您基本上将 []"ABC"、"XYZ" 作为 数组 传递给 $a
。在那种情况下 $b
是空的!
您可以通过 删除逗号 轻松解决此问题(括号也不是必需的):
Test-Fun $topa $topb