Sua pergunta não pode ser respondida de maneira geral. Alguns comentários embora. Na minha versão do bash (3.1.17 (1) -release), seu comando não tem a saída desejada, mesmo quando executado a partir da linha de comando; o mesmo com zsh. Então, presumivelmente, algo é suspeito sobre o seu comando. Eu não sei o que "## + (0)" é suposto para realizar, mas "# 0" consegue remover um zero à esquerda. Este mostra uma maneira de remover números arbitrários de zeros.
Se realmente houver uma diferença entre o comportamento na linha de comando e de um script, provavelmente o script usa um interpretador diferente (diferente versão bash, bash em vez de zsh) ou opções de shell diferentes (tente executar shopt
). A última diferença pode ser o resultado da origem do shell interativo $HOME/.bashrc
e $HOME/.profile
, enquanto os scripts geralmente não o fazem. Isso não deve afetar as variáveis de ambiente, já que elas são herdadas se exportadas, mas devem afetar as opções do shell, que precisam ser definidas em cada shell.