O cenário clássico com Precedência de Operador, você tem uma linha como:
(cd ~/screenshots/ && ls screenshot* | head -n 5)
E você não sabe se é analisado ((A && B) | C)
ou (A && B | C)
...
A documentação quase oficial encontrada aqui não lista o pipe na lista, então não posso simplesmente verificar a tabela.
Além disso, no bash, (
não é apenas para alterar a ordem das operações, mas cria um subshell , então não tenho 100% de certeza de que essas linhas são equivalentes à linha anterior:
((cd ~/screenshots/ && ls screenshot*) | head -n 5)
Mais geralmente, como saber o AST de uma linha bash? Em python eu tenho uma função que me dá a árvore para que eu possa facilmente verificar a ordem de operação.