Powershell使用Backtick创建新线-怪异

Powershell使用Backtick创建新线-怪异,powershell,Powershell,例1中发生了什么?这是如何解析的 # doesnt split on , [String]::Join(",",("aaaaa,aaaaa,aaaaa,aaaaa,aaaaa,aaaaa," + ` "aaaaa,aaaaa,aaaaa,aaaaa,aaaaa,aaaaa,aaaaa,aaaaa,aaaaa,aaaaa".Split(',') ` | foreach { ('"' + $_ + '"') })) # adding ( ) does work [Strin

例1中发生了什么?这是如何解析的

    # doesnt split on ,
[String]::Join(",",("aaaaa,aaaaa,aaaaa,aaaaa,aaaaa,aaaaa," + `
"aaaaa,aaaaa,aaaaa,aaaaa,aaaaa,aaaaa,aaaaa,aaaaa,aaaaa,aaaaa".Split(',') `
| foreach { ('"' + $_ + '"') }))  





#  adding ( ) does work 
[String]::Join(",",(("aaaaa,aaaaa,aaaaa,aaaaa,aaaaa,aaaaa," + `
"aaaaa,aaaaa,aaaaa,aaaaa,aaaaa,aaaaa,aaaaa,aaaaa,aaaaa,aaaaa").Split(',') `
| foreach { ('"' + $_ + '"') }))  

第一个示例仅将Split方法应用于a的第二个字符串。括号是操作顺序所必需的。在第一个示例中,拆分方法在连接之前执行。

在第一个示例中,您可以删除反勾号,因为Powershell知道字符串将继续(有一个
+
符号)

波什做什么

  • 从第一个字符串中获取字符串“aaaa,aaaa…”(1)
  • 使用split对表达式求值-它返回字符串数组(来自
    “aaaa,…aaaa”。split(',')
  • 将字符串数组转换为字符串,该字符串再次返回字符串“aaaa,…aaaa”
  • 添加来自1的结果。三, 注意:当posh将数组转换为字符串时,它使用
    $ofs
    变量。当您尝试以下代码时,您将更好地看到它的实际应用:

    $ofs = "|"
    [String]::Join(",", ("aaaaa,aaaaa" + "bbbb,bbbb,bbbb".Split(',') | foreach { ('"' + $_ + '"') }))