O problema é causado por tr diferentes e diferentes configurações de PATH.
works: /usr/local/bin/tr (GNU coreutils) 6.4
failed: /usr/ucb/tr unkown version size 9916 bytes
works: /bin/tr size 19400 Usage: /bin/tr [ -cds ] [ String1 [ String2 ] ]
Eu uso o seguinte código e falhei.
$ echo $TERM
xtermc
$ v=/bin:/usr/bin:/usr/local/bin ; echo $v | tr ':' '\n'
/binn/usr/binn/usr/local/bin
Parece pular meu '/'. Eu não sei como resolver isso. Minha concha é zsh. Eu mudei para bash, mas ainda falhei.
Mas, em outra máquina, funciona. e o resultado é
/bin
/usr/bin
/usr/local/bin
Eu descobri que existem três tr
/usr/local/bin/tr (GNU coreutils) 6.4
/usr/ucb/tr unkown version size 9916 bytes
/bin/tr size 19400 Usage: /bin/tr [ -cds ] [ String1 [ String2 ] ]
O problema é causado por tr diferentes e diferentes configurações de PATH.
works: /usr/local/bin/tr (GNU coreutils) 6.4
failed: /usr/ucb/tr unkown version size 9916 bytes
works: /bin/tr size 19400 Usage: /bin/tr [ -cds ] [ String1 [ String2 ] ]
Como você está usando o zsh, pode usar essa abordagem e não dependerá mais de nenhum comando externo:
$ v=/bin:/usr/bin:/usr/local/bin; print -l ${(s.:.)v}
/bin
/usr/bin
/usr/local/bin
Como funciona:
(s.:.)
divide o parâmetro $v
em dois pontos (consulte man zshexpn
) print -l
imprime cada argumento a seguir em uma única linha Se você confiar no caractere de nova linha , use
$ print ${v//:/\n}
em que //from/to
faz uma busca global (duas barras iniciais) & substituir.