首页 > 解决方案 > PowerShell字符串格式函数内的不同行为

问题描述

在使用 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 并认为这会导致问题,但事实并非如此。我错过了什么,或者更确切地说,函数内部和外部的字符串扩展有什么区别?

标签: powershellvariable-expansion

解决方案


你叫Test-Func错了。后面的逗号$topa将创建一个数组,因此您基本上将 []"ABC", "XYZ" 作为数组传递给$a. 在那种情况下$b是空的!

您可以通过删除逗号轻松解决此问题(括号也不是必需的):

Test-Fun $topa $topb

推荐阅读