PowerShell 与 Linux 命令串联符号为什么不一样
先说结论 多条命令想一次粘贴执行,Linux 的 bash 里用 && 串联,Windows 老版 PowerShell 里要用分号 ; 串联。把 bash 的 && 原样粘进老版 PowerShell,会直接报 ParserError,一条都执行不了。 当时的事 有一次我给了一串 Linux 命令,用 && 串成一整行——这是我平时给 FinalShell 的标准写法,粘过去就能整段执行。结果对方是在 Windows PowerShell 里粘的,当场报 ParserError。 错在我: 给命令之前没先确认对方用的是哪个壳 。同一串命令,换个壳就可能是另一套语法。 为什么不一样 && 在 bash 里叫"条件串联":前一条命令成功了,才执行下一条;前一条失败,后面的就不执行了。写多条有依赖关系的命令时用它很顺手。 Windows PowerShell 5.1 里根本没有 && 这个运算符。PowerShell 里 & 是另一个意思:调用运算符(用来执行命令或脚本块)。解析器看到 && 就懵了,于是报 ParserError。 直到 PowerShell 7(2020 年发布),微软才把 && 和 || 补进来。所以"PowerShell 不支持 && "这句话要加限定: 5.1 不支持,7+ 支持 。 对照表 写法 bash(Linux) PowerShell 5.1 PowerShell 7+ 前成功才执行后 cmd1 && cmd2 不支持 cmd1 && cmd2 前失败才执行后 `cmd1 \ \ cmd2` 不支持 `cmd1 \ \ cmd2` 顺序执行,不管成败 cmd1 ; cmd2 cmd1 ; cmd2 cmd1 ; cmd2 分行写 换行 换行 换行 分号 ; 是三方都认的"顺序执行",不确定对方版本时,用分号最保险。 先查自己是哪个版本 在 PowerShell 里跑这一行,就能看到版本: $PSVersionTable.PSVersion Major 是 5 就是老版,Major 是 7 就...