问题描述
在使用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”作为 array 传递给$a
。在这种情况下,$b
为空!
您可以通过删除逗号(也不需要括号)轻松解决此问题:
Test-Fun $topa $topb