Verifique o shell que você está usando:
echo $0
Se for /bin/sh
, mude para /bin/bash
com chsh
e tente novamente.
Estou escrevendo um script bash e quero repetir uma string, mas sem uma nova linha automaticamente adicionada ao final. Lendo a página de manual, o sinalizador é -n
.
O problema é que quando eu faço:
echo -n "My string is here"
A saída no script bash é:
-n My string is here
Qualquer ideia de porque o -n
sinalizador está sendo gerado em vez de processado.
Verifique o shell que você está usando:
echo $0
Se for /bin/sh
, mude para /bin/bash
com chsh
e tente novamente.
Funciona no CentOS, mas parece que o OSX não gosta do sinalizador -n.
echo
é estranhamente inconsistente entre as versões - versões diferentes de / bin / echo, assim como as versões embutidas em vários shells (até versões diferentes do mesmo shell). Algumas versões entendem opções (como -n
), algumas versões entendem sequências de escape dentro da string (terminam com "\c"
para pular a nova linha). Algumas versões usam uma mistura estranha das duas.
Se você quiser um comportamento consistente, evite echo
e use printf
. É um pouco mais complicado, mas é muito mais previsível:
printf "%s" "My string is here"