Le Fri, 22 Nov 2013 19:11:42 +0100
Tormen a écrit:
Hello,
> but also just this line:
>
> sed -e 1$'{w/dev/stdout\n;d}' -i /tmp/x
>
> in a dash script will yield the error message:
>
> sed: -e expression #1, char 2: unknown command: `$'
>
> But why ? :(
It seems dash strictly passes what you have given and which is
sed-speaking incorrect:
$ dash -c "strace sed -e 1$'{w/dev/stdout\n;d}' -i /tmp/x"
execve("/usr/bin/sed", ["sed", "-e", "1${w/dev/stdout\\n;d}", ...
^^^
Bash does not, and so passes something sed understands:
$ bash -c "strace sed -e 1$'{w/dev/stdout\n;d}' -i /tmp/x"
execve("/usr/bin/sed", ["sed", "-e", "1{w/dev/stdout \n;d}", ...
^^^
If you escape the "$" with bash, you will get your kitten back:
$ bash -c "sed -e 1\\$'{w/dev/stdout\n;d}' -i /tmp/x"
sed: -e expression #1, char 2: unknown command: `$'
Take care,
Seb.
--
To unsubscribe from this list: send the line "unsubscribe dash" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html