De man echo
:
-e
enable interpretation of backslash escapes
Seu eco pode ser um shell embutido (tente type echo
). Em caso afirmativo, use help echo
em vez de man echo
. Mas deveria dizer o mesmo sobre a opção -e
.
Sem essa opção, a string \n
é impressa literalmente, não como um avanço de linha. Aviso tr
não precisa de nenhuma opção especial para funcionar conforme o esperado.
Comando fixo:
echo -ne "s\n" | tr "\n" "a"
O colega Gordon Davisson apontou algumas coisas. Eles parecem importantes o suficiente para incluí-los em minha resposta para referência futura. A partir deste ponto, todo o crédito vai para Gordon .
Different versions of
echo
are very inconsistent with respect to escapes and options. Some will interpret escape sequences without-e
. Some will print "-e" as part of their output. Some do… other things. For things like this, useprintf
instead (as inprintf "s\n"
). See the POSIX spec forecho
, especially the "application usage" section.