Powershell如何与args连接
Powershell how to concatenate with args
我只想与 args 字符串连接,但如果 args 是 app,我在 $test 中得到 -System.Object[] 而不是“testapp”:
function test {
Write-Host $args;
$test = -join("test",$args.ToString());
Write-Host $test;
}
最简单的方法是使用 string interpolation:
function test {
Write-Host $args
$test = "test$args"
Write-Host $test
}
test app
输出:
app
testapp
默认情况下,字符串插值使用 space 字符连接数组值。
要指定自定义分隔符字符串,请像这样使用 -join
运算符:
function test {
Write-Host $args
$argsJoined = $args -join ', '
$test = "test $argsJoined"
Write-Host $test
}
test 4 8 15
输出:
4 8 15
test 4, 8, 15
至于你试过的:
$test = -join("test",$args.ToString());
$args
是一个数组,其ToString()
方法只是returns数组的类型名称。
作为 Theo pointed out in his helpful ,您可以通过使用数组连接来完成这项工作:
$test = -join(@("test") + $args)
array sub-expression operator @
确保 +
运算符应用于数组,而不是字符串 "test"
.
稍短的变体:
$test = -join @("test"; $args)
注意使用 ;
将 $args
变成 sub-expression,这实际上 展开它。
在这两种情况下,-join
运算符的参数都是一个新数组,它是 "test"
和 $args
数组元素的组合。
我只想与 args 字符串连接,但如果 args 是 app,我在 $test 中得到 -System.Object[] 而不是“testapp”:
function test {
Write-Host $args;
$test = -join("test",$args.ToString());
Write-Host $test;
}
最简单的方法是使用 string interpolation:
function test {
Write-Host $args
$test = "test$args"
Write-Host $test
}
test app
输出:
app
testapp
默认情况下,字符串插值使用 space 字符连接数组值。
要指定自定义分隔符字符串,请像这样使用 -join
运算符:
function test {
Write-Host $args
$argsJoined = $args -join ', '
$test = "test $argsJoined"
Write-Host $test
}
test 4 8 15
输出:
4 8 15
test 4, 8, 15
至于你试过的:
$test = -join("test",$args.ToString());
$args
是一个数组,其ToString()
方法只是returns数组的类型名称。
作为 Theo pointed out in his helpful
$test = -join(@("test") + $args)
array sub-expression operator @
确保 +
运算符应用于数组,而不是字符串 "test"
.
稍短的变体:
$test = -join @("test"; $args)
注意使用 ;
将 $args
变成 sub-expression,这实际上 展开它。
在这两种情况下,-join
运算符的参数都是一个新数组,它是 "test"
和 $args
数组元素的组合。