Estou tentando desenvolver um script que roda (e, ou seja, faz o mesmo :-) ) em zsh e bash. O problema é que, em um ponto, a parte específica do zsh contém um padrão neding com (N)
. Então: this_pattern*(N)
. No zsh, isso torna o padrão inexistente se não houver correspondência.
Bash diz para isso, "erro de sintaxe por símbolo inesperado". Observe que a execução no bash nunca acontece nesta parte específica do zsh e essa mensagem de erro é causada pelo código de análise!
Eu poderia de alguma forma ajudar o bash a comê-lo, por exemplo, para não analisá-lo?
De
zsh_expn
:Então, a maneira bash seria definir a
nullglob
opção para esse padrão.funcionaria e defina essa opção apenas para o subshell gerado por
(…)
. (Oushopt
ousetopt
falha, sendo bash e zsh embutidos, respectivamente, mas aquele que funciona define a opção de fazer com que os padrões sem correspondências desapareçam sem erros&&
e||
tenha avaliação da esquerda para a direita.)Observe que, é claro, isso carece de beleza (desculpe, @StéphaneChazelas!), E a criação de subshell acarreta uma penalidade de desempenho. Mas você quer portabilidade, então não pode realmente usar um recurso específico do zsh.