Package: posh
Version: 0.12.3
Severity: normal
The canonical example is:
$ printf "%s %s\n" $(
printf "%s\n" "$(printf "%s\n" 'START\
NOLINE')"
)
that prints "STARTNOLINE\n" instead of "START\\ NOLINE\n". This is an
incorrect behaviour according to
http://pubs.opengroup.org/onlinepubs/000095399/utilities/xcu_chap02.html#tag_02_06_03:
" Any valid shell script can be used for command, except a script
consisting solely of redirections which produces unspecified results. "
Note that this bug is found in pdksh but it has been fixed in mksh;
Debian stable has a non buggy pdksh 40.9.20120630-7 (provided by mksh)
while pdksh PD KSH v5.2.14 99/07/13.2 is buggy.
See the joined script for more examples.
Regards
--
G.raud Meyer
#!/bin/posh
NL='
'
echo This is incorrect behaviour
printf "%s %s\n" $(
printf "%s\n" "$(printf "%s\n" 'START\
NOLINE')"
)
printf "%s %s\n" "$(
printf "%s %s\n" "$(
printf "%s %s\n" "$(printf "%s\n" 'START\
NOLINE')"
)"
)"
echo This is a workaround
printf "%s %s\n" "$(
printf "%s %s\n" "$(printf "%s\n" 'START\'"$NL"'LINE')"
)"
echo These are cases that do not exhibit the behaviour
printf "%s %s\n" "$(printf "%s\n" 'START\
LINE')"
printf "%s %s\n" "$(
printf "%s %s\n" $(printf "%s\n" 'START\
LINE')
)"
printf "%s %s\n" "$(
printf "%s %s\n" "$(printf "%s\n" 'START
LINE')"
)"