Script Bash Echo -n

2

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.

    
por Justin 20.09.2011 / 11:02

3 respostas

6

Verifique o shell que você está usando:

echo $0

Se for /bin/sh , mude para /bin/bash com chsh e tente novamente.

link

    
por 20.09.2011 / 11:14
1

Funciona no CentOS, mas parece que o OSX não gosta do sinalizador -n.

    
por 20.09.2011 / 11:12
1

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"
    
por 20.09.2011 / 20:01

Tags