Comando echo Unix com opção -e

Comando echo Unix com opção -e

Eu estava lendo sobre o echocomando no UNIX e encontrei a -eopção que é usada para habilitar a interpretação de escapes de barra invertida, o problema é que uma dessas sequências de escape de barra invertida era o \\, mas quando usei os dois comandos:

echo "hello\\\world"

e

echo -e "hello\\\world"

recebo a mesma saída: hello\\world , então qual é a diferença? |

Responder1

O padrão é expandir as sequências de escape, a opção -e não é padrão.

Se sua implementação de eco não incluir -e na saída de eco, ela não será compatível.

O problema aqui é que existem implementações que seguem apenas os requisitos mínimos do POSIX e ignoram o fato de que uma plataforma que pode ser chamada de UNIXcompatível precisa implementar suporte para XSImelhorias do POSIX.

BTW: bash no MacOS X e Solaris é compilado para sempre expandir as sequências de escape. Bash na variante de compilação padrão não é compatível com POSIX XSI.

Shells compatíveis com POSIX, como ksh93, bosh ou dash, expandem as sequências de escape por padrão, conforme necessário.

Se você gosta de verificar o comportamento, sua string de teste não é uma boa ideia. Um teste melhor seria:

echo '\tfoo'

e para verificar se fooé precedido por um caractere de tabulação na saída.

A razão pela qual você pode ter tido problemas é que você usou foo\\bare que o shell já trata barras invertidas em strings entre aspas duplas. Se você quiser verificar o echocomportamento, precisará usar strings entre aspas simples como argumentos.

informação relacionada