如何输入多行命令

我的未来我决定 提交于 2020-02-26 14:43:50

是否可以将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中,也可以使用移位 +在每行对多行编辑(而不是标准的反引号的端部输入 ` )。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!