具有运算符优先级的经典场景,您有如下一行:
(cd ~/screenshots/ && ls screenshot* | head -n 5)
而且你不知道它是否被解析((A && B) | C)
或(A && B | C)
......
在这里找到的几乎官方文档没有在列表中列出管道,所以我不能简单地检查表。
此外,在 bash 中,(
不仅用于更改操作顺序,而且还创建了一个 subshel l ,因此我不能 100% 确定此行与上一行等效:
((cd ~/screenshots/ && ls screenshot*) | head -n 5)
更一般地说,如何知道bash 行的AST ?在 python 中,我有一个函数可以给我树,以便我可以轻松地仔细检查操作顺序。