如何在PowerShell单行命令中复现指定的Bash命令逻辑?
PowerShell 实现指定Bash命令组逻辑的解决方案
需求说明
需要实现与Bash命令{ $another_command_group ;} && { A ; { B && C ;} ;} && { $another_command_group ;}等价的PowerShell单行命令,其核心逻辑块{ A ; { B && C ;} ;}的行为如下:
- 当A=0、B=0、C=0时:不执行任何命令,命令组返回0
- 当A=0、B=0、C=1时:不执行任何命令,命令组返回0
- 当A=0、B=1、C=0时:仅执行命令B,命令组返回0
- 当A=0、B=1、C=1时:执行命令B和C,命令组返回1
- 当A=1、B=0、C=0时:仅执行命令A,命令组返回0
- 当A=1、B=0、C=1时:仅执行命令A,命令组返回0
- 当A=1、B=1、C=0时:执行命令A和B,命令组返回0
- 当A=1、B=1、C=1时:执行所有命令A、B、C,命令组返回1
环境信息
- PowerShell版本:7.2.6
- 操作系统:Windows
已尝试方法及问题
- 命令:
( A ; ( B && C ) ),报错:Missing closing ')' in expression.,原因是PowerShell中括号()用于表达式计算,不能直接包裹命令序列。 - 命令:
A ; ( B && C ),可运行,但无法将A ; ( B && C )作为单一命令组,与其他命令组通过&&连接。
解决方案
核心逻辑块实现
PowerShell中需使用**脚本块执行运算符&**包裹命令序列,形成可参与逻辑判断的命令组,对应核心逻辑块的写法为:
& { A; & { B && C } }
完整单行命令
对应原Bash命令的完整PowerShell单行命令为:
& { $another_command_group } && & { A; & { B && C } } && & { $another_command_group }
逻辑说明
& { ... }是PowerShell中执行脚本块的语法,等价于Bash的{ ...; }命令组,可将内部命令序列作为一个整体参与&&逻辑判断。- 核心块执行逻辑:先运行命令A(无论A执行成功或失败),再执行
B && C(仅当B执行成功时才运行C)。 - 整个命令组的返回值为最后一个执行命令的退出码,完全匹配需求中的8种行为。
内容的提问来源于stack exchange,提问作者wut
相关产品推荐
相关产品推荐

