Há dois casos em que não entendo por que o bash se comporta dessa forma em relação à verificação de sintaxe e à solicitação de uma nova linha.
Caso 1
O bash pode executar a linha ( (ls) | cat)
, mas dependendo de quando você pressiona Enter ao digitar, pode funcionar ou não.
Isso funciona:
( (ls ) |⏎
cat
Isto falha:
( (ls) ⏎
| cat)
com erro
-bash: erro de sintaxe próximo ao token inesperado `|'
Existe uma lógica para o segundo caso não funcionar? Ou é apenas como o bash funciona internamente?
Caso 2
Outra coisa que não entendo é que, quando você entra, (ls) "⏎
o bash pede outra linha. Existe alguma maneira de finalizar esse comando sem obter um erro de sintaxe? E se não, por que o bash não imprime diretamente uma mensagem de erro para um erro de sintaxe?