{} substitution in Bourne shell (was: Re: awk arguments)

Mike Moore mike at x.co.uk
Thu Jul 26 21:09:36 AEST 1990


In article <855 at mwtech.UUCP> martin at mwtech.UUCP (Martin Weitzel) writes:
>
>%: It turns out that something of the above becomes a new questions for
>   you unix wizards: Does anybody know a way to quote a "}" in the
>   context of a conditional expansion of a shell variable. What I'm
>   looking for is the following
>
>	echo ${A:+'{}'}    # echo '{}' only if A is not empty
>
>   which works for non-empty A-s but fails otherwise: a single '}'
>   is echoed where IMHO nothing should appear. Note that the above
>   works if I use some intermediate variable: B={}; echo ${A+$B}
>   Or is it a bug of the shell that the above doesn't work as
>   expected?
>-- 
>Martin Weitzel, email: martin at mwtech.UUCP, voice: 49-(0)6151-6 56 83

I haven't got the source code to /bin/sh, but I would say it's a bug because
it doesn't matter how much you quote the first } it still gets used as the end
marker for the substitution command.

An alternative to assigning B={} is to use:

    ${A:+"\0173\0175"}
 or
    ${A:+{"\0175"}.


-- 
--------------------------------------------------------------------------
Usual disclaimer.....  etc                        | mike at x.co.uk
True Intelligence is not knowing all the answers, |
it's knowing the right questions.                 |



More information about the Comp.unix.questions mailing list