|
|
- @echo off
- echo.
- echo. 已经确认命令连接符号优先级从低到高如下:
- echo. ^& 命令分隔符
- echo. ^|^| 逻辑或操作符
- echo. ^&^& 逻辑与操作符
- echo. ^| 管道操作符
- echo. ^< ^> ^>^> I/O重定向操作符
- echo. ^(^) 命令分组
- echo.
- echo.证明过程如下:
- pause
- echo.
- echo. 首先应当公认^(和^)作为命令分组符号有最高的优先级,可以改变任意命令组的优先级
- echo.
- echo. 另外需要注意的是,命令连接符号的优先级与语句的执行顺序不是直接对应的
- echo.
- echo. 命令行中的语句仍然是先执行左侧,再执行右侧
- echo.
- echo. 命令连接符只影响左侧与右侧语句的分组过程,而不会使右侧语句先执行
- echo.
- pause
- cls
- echo on
- echo flag1 | echo flag2 > con
- echo flag1 | (echo flag2 > con)
- (echo flag1 | echo flag2) > con
- @echo off
- echo.
- echo.前两句输出效果相同,说明第二句的分组符号可以省略,证明 ^> 优先级大于 ^|
- pause
- cls
- echo on
- echo flag1 && echo flag2 | echo flag3
- echo flag1 && (echo flag2 | echo flag3)
- (echo flag1 && echo flag2) | echo flag3
- @echo off
- echo.
- echo.前两句输出效果相同,说明第二句的分组符号可以省略,证明 ^| 优先级大于 ^&^&
- pause
- cls
- echo on
- echo flag1 || echo flag2 && echo flag3
- echo flag1 || (echo flag2 && echo flag3)
- (echo flag1 || echo flag2) && echo flag3
- @echo off
- echo.
- echo.前两句输出效果相同,说明第二句的分组符号可以省略,证明 ^&^& 优先级大于 ^|^|
- pause
- cls
- echo on
- echo flag1 || echo flag2 & echo flag3
- (echo flag1 || echo flag2) & echo flag3
- echo flag1 || (echo flag2 & echo flag3)
- @echo off
- echo.
- echo.前两句输出效果相同,说明第二句的分组符号可以省略,证明 ^|^| 优先级大于 ^&
- pause
- cls
- echo.综合测试示例:
- echo.
- echo on
- echo flag1 & more flag2 || echo flag3 && echo flag4 | echo flag5 || echo flag6
- echo flag1 & ((more flag2 || (echo flag3 && (echo flag4 | echo flag5))) || echo flag6)
- (echo flag1 & (more flag2 || (echo flag3 && echo flag4) | echo flag5)) || echo flag6
- @echo off
- echo.
- echo.前两句输出效果相同,说明符合优先级和分组优先级相同,第三句是个反例
- pause
复制代码 |
评分
-
查看全部评分
|