shell scripting advise: Don't use backslashes inside backtick quotes
Roland Illig
roland.illig at gmx.de
Thu Aug 4 10:53:17 UTC 2005
Oswald Buddenhagen wrote:
> On Thu, Aug 04, 2005 at 07:31:42AM +0200, Oswald Buddenhagen wrote:
>
>>On Thu, Aug 04, 2005 at 01:19:50AM +0200, Roland Illig wrote:
>>
>>>quote() {
>>> _sedexpr="s,','\\\\'',g"
>>> _quotestr=`echo x"$1" | sed -e '1s,^x,,' -e "${_sedexpr}"`
>>> echo "'${_quotestr}'"
>>>}
>>>
>>>So if you ever use backticks, please don't use backslashes inside them.
>>>
>>
>>yes, it's a well-known ;) fact that backticks have weird semantics when
>>it comes to about any other nested quoting.
>>really old shells will explode on your current version, too, but we
>>really needn't to consider those.
Why? Because of possible backslashes?
> more importantly ... unless $1 is guaranteed not to contain backslashes,
> things will go awfully wrong with some echo variants. safest is 'printf
> "%s" "$1"' - supposedly all halfways modern systems have it ...
> otherwise you could try to inject it by putting it into a sed i
> statement, but i have no clue whether/how that works.
Thanks for that comment. I almost forgot. Shell programming is ugly. :(
Roland
More information about the mc-devel
mailing list