是否可以将PowerShell命令行拆分为多行?
在Visual Basic中,我可以使用下划线( _
)继续下一行中的命令。
#1楼
我发现后面的勾号和换行符之间一定不能有任何字符。 即使是空格也会导致命令不起作用。
#2楼
我假设您正在谈论命令行 - 如果它在脚本中,那么新行充当命令分隔符。
在命令行中,使用分号“;”
#3楼
您可以使用空格,然后使用重音(反引号):
Get-ChildItem -Recurse `
-Filter *.jpg `
| Select LastWriteTime
但是,在上述情况下,这只是必要的。 通常,当命令在该点语法上无法完成时,您将获得自动行继续。 这包括启动一个新的管道元素:
Get-ChildItem |
Select Name,Length
因为|
之后会没有问题 命令无法完成,因为它缺少另一个管道元素。 同时打开花括号或任何其他类型的括号将允许直接继续行:
$x=1..5
$x[
0,3
] | % {
"Number: $_"
}
类似于|
逗号在某些情况下也会起作用:
1,
2
请记住,虽然,类似于JavaScript的自动分号插入 ,也有一些事情,也同样打破,因为线路中断发生在它是由一个有效的声明之前的一个点:
return
5
不管用。
最后,字符串(各种类型)也可能超出一行:
'Foo
bar'
它们包括字符串中的换行符。
#4楼
在大多数类C语言中,我故意将我的括号放在我认为它们使代码最容易阅读的地方。
PowerShell的解析器识别语句明显不完整,并查看下一行。 例如,假设一个带有可选脚本块参数的cmdlet:
Get-Foo { ............ }
如果脚本块很长,你可能想写:
Get-Foo { ............... ............... ............... }
但这不起作用:解析器将看到两个语句。 第一个是Get-Foo
,第二个是脚本块。 相反,我写道:
Get-Foo { ............... ............... ............... }
我可以使用行继续符(`),但这会产生难以阅读的代码,并引发错误。
因为这种情况需要将开放式大括号放在上一行,所以我在任何地方都遵循这种模式:
if (condition) { ..... }
请注意,
if
语句需要语言语法中的脚本块,那么解析器将查看脚本块的下一行,但为了保持一致性,我将开放式大括号保持在同一行。
同样地,在长管道的情况下,我在管道字符( |
)之后断开:
$project.Items | ? { $_.Key -eq "ProjectFile" } | % { $_.Value } | % { $_.EvaluatedInclude } | % { ......... }
#5楼
在PowerShell和PowerShell ISE中,也可以使用移位 +在每行对多行编辑(而不是标准的反引号的端部输入 `
)。
来源:oschina
链接:https://my.oschina.net/stackoom/blog/3167876