Comportamento misterioso do comando echo

3

Quando precisarmos usar caracteres de seqüência de escape com o comando echo , devemos usar a opção -e . Como

echo -e "Enter your name : \c"

Mas quando incluímos esse tipo de instruções dentro de um programa shell (arquivo .sh), ele produz um erro misterioso. Imprime

-e Enter your name : 

Ele não precisa da opção -e com o comando echo como se escrevêssemos assim

echo "Enter your name : \c"

Mostra a saída sem erros, mas isso não funciona no shell.

Então, qual é o motivo? Estou usando o bash shell e a versão do Ubuntu 15.04.

    
por Rohan Gayen 01.01.2016 / 21:14

1 resposta

7

Eu acho que você não usou um shebang ( #! /bin/bash como a primeira linha do seu script). Nesse caso, o script é executado usando /bin/sh , que é /bin/dash . E echo in dash não suporta o% não padrão-e (dê uma olhada no Padrão POSIX . Você realmente não deveria usar echo -e . Use printf para um comportamento muito mais portátil. Veja Por que é printf melhor que echo '? no Unix e no Linux. Os seguintes comandos devem se comportar de maneira idêntica:

bash -c 'printf "%s" "Enter your name"'
dash -c 'printf "%s" "Enter your name"'
    
por muru 01.01.2016 / 21:22