On 4/26/20 12:27 PM, Thomas de Grivel wrote:
> Hello,
>
> I was testing some scripting using /bin/sh and I could not find this
> behaviour in the documentation :
>
>> $ /bin/sh
>> $ echo -n '\n'
>>
>> $
>
> It seems that ksh even in sh (posix ?) mode does expansion of \n to an
> actual newline.>
> First is there a way to turn off the \n expansion in simple quotes in /bin/sh ?
You mean placing an additional \ in front of it?
$ echo '\\n'
\n
Or by calling the binary instead of the shell builtin?
$ /bin/echo '\n'
\n
Or by adding -E?
$ echo -E '\n'
\n
Now also note what POSIX itself says[0]:
It is not possible to use echo portably across all POSIX systems unless
both -n (as the first argument) and escape sequences are omitted.
...
New applications are encouraged to use printf instead of echo.
>
> Second I don't see this feature described neither in man sh nor man
> ksh so is it a known behaviour of ksh ?
from echo(1):
echo does not support any of the backslash character sequences mandated
by XSI.
from ksh(1):
See the print command below for a list of other backslash sequences that
are recognized.
...
By default, certain C escapes are translated. These include '\b', '\f',
'\n', '\r', '\t', '\v', and '\0###' ('#' is an octal digit, of which
there may be 0 to 3).
>
> Thanks a ton,
>
[0] https://pubs.opengroup.org/onlinepubs/9699919799/utilities/echo.html
No comments:
Post a Comment