[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: printf %q represents null argument as empty string.

From: John Kearney
Subject: Re: printf %q represents null argument as empty string.
Date: Fri, 11 Jan 2013 21:39:00 +0100
User-agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:17.0) Gecko/17.0 Thunderbird/17.0

Am 11.01.2013 19:38, schrieb Dan Douglas:
>     $ set --; printf %q\\n "$@"
>     ''
> printf should perhaps only output '' when there is actually a corresponding
> empty argument, else eval "$(printf %q ...)" and similar may give different 
> results than expected. Other shells don't output '', even mksh's 
> address@hidden 
> expansion. Zsh's ${(q)var} does.

that is not a bug in printf %q

it what you expect to happen with "address@hidden" 
should that be 0 arguments if $# is 0.

I however find the behavior irritating, but correct from the description.

to do what you are suggesting you would need a special case handler for this
"address@hidden" as oposed to "address@hidden" or any other variation.

what I tend to do as a workaround is

printf() {
    if [ $# -eq 2 -a -z "${2}" ];then
        builtin printf "${1}"
        builtin printf "address@hidden"

or not as good but ok in most cases something like

printf "%q" ${1:+"address@hidden"}

reply via email to

[Prev in Thread] Current Thread [Next in Thread]