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