O operador {0..10}
zsh
(agora também suportado por alguns outros shells incluindo bash
) é apenas uma outra forma de expansão de chave de estilo csh
.
É expandido pelo shell antes de chamar o comando. O comando não vê esses {0..10}
.
Com tr '#' {0..10}
(citando que #
, caso contrário, é analisado pelo shell como o início de um comentário), tr
termina sendo chamado com ("tr", "#", "0", "1 ", ...," 10 ") como argumentos e tr
não espera muitos argumentos.
Aqui, você deseja:
echo '_'{0..10}'.test'
para echo
ser passado como "_0.test", "_1.test", ..., "_10.test" como argumentos.
Ou se você quiser que #
seja traduzido nesse operador {0..10}
, transforme-o em código de shell a ser avaliado:
eval "$(echo 'echo _#.test' | sed 's/#/{0..10}/')"
onde eval
está sendo passado echo _{0..10}.test
como argumentos.
(não que eu recomendaria fazer algo assim).