powershell - 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 并认为这会导致问题,但事实并非如此。我错过了什么,或者更确切地说,函数内部和外部的字符串扩展有什么区别?
解决方案
你叫Test-Func
错了。后面的逗号$topa
将创建一个数组,因此您基本上将 []"ABC", "XYZ" 作为数组传递给$a
. 在那种情况下$b
是空的!
您可以通过删除逗号轻松解决此问题(括号也不是必需的):
Test-Fun $topa $topb
推荐阅读
- c# - 使用.net MVC中的路由将Url的第一个字母大写(Url Routing to UpperCase)
- python-3.x - Celery Canvas:如何将任务的结果列表的元素分发到链并在之后链其他
- wso2 - WSO2 APIM 3.1.0 服务器无法启动并出现 Qpid 错误
- flutter - 在 Flutter 中将图像添加到 ListTile - 具体问题
- docker - 从在线教程创建我的第一个 Docker 映像时,我收到此错误
- r - 读取大型 csv 文件并加入 r
- memory-leaks - 当我重新启动我的电脑时,堆内存会被释放吗?
- django - 扩展组模型的嵌套序列化程序在用户序列化程序中缺少某些字段
- javascript - 停止在三个 JS 中长距离加载对象
- python - 根据某些条件从字典的python字典中删除键