[英]Powershell is removing comma from program argument
我想將逗號分隔的值列表作為單個開關的一部分傳遞到腳本中。
這是程序。
param(
[string]$foo
)
Write-Host "[$foo]"
這是使用示例
PS> .\inputTest.ps1 -foo one,two,three
我希望這個程序的 output 是[one,two,three]
但它返回的是 [one,two, [one two three]
。 這是一個問題,因為我想使用逗號來分隔值。
為什么 powershell 刪除逗號,我需要更改什么才能保留它們?
逗號是powershell中的一個特殊符號,表示數組分隔符。
只需將參數放在引號中:
inputTest.ps1 -foo "one, two, three"
或者,您可以“引用”逗號:
inputTest.ps1 -foo one`,two`,three
以下選擇可用
圍繞所有論點的引用(')
inputTest.ps1 -foo 'one,two,three'
每個逗號之前的Powershell的轉義字符(重音符號(`))
inputTest.ps1 -foo one`,two`,three
參數的雙引號不會改變任何東西!
單引號消除了擴展。
逃脫角色 (重音符號)消除了下一個角色的擴展
將它括在引號中,以便將其解釋為一個變量,而不是以逗號分隔的三個列表:
PS>。\\ inputTest.ps1 -foo“一,二,三”
如果您從批處理文件傳遞參數,則將您的參數括起來,如下所示“”“Param1,Param2,Param3,Param4”“”
Powershell 刪除逗號並使用它們來分隔數組。 您可以將數組元素重新連接成一個字符串,並在每個元素之間放置一個逗號。
param(
[string[]]$foo
)
$foo_joined = $foo -join ","
write-host "[$foo_joined]"
arguments 之間的任何空格都將被刪除,因此:
PS>.\inputTest.ps1 -foo one, two, three
還將 output: [one,two,three]
如果您需要空格,則需要引號,請執行以下操作:
PS>.\inputTest.ps1 -foo one,"two is a pair"," three"
如果要 output: [one,two is a pair, three]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.