De man echo :
-eenable 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
echoare 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, useprintfinstead (as inprintf "s\n"). See the POSIX spec forecho, especially the "application usage" section.