bug-bash
[Top][All Lists]
Advanced

[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 ${var@Q} 
> expansion. Zsh's ${(q)var} does.

that is not a bug in printf %q

it what you expect to happen with "${@}" 
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
"${@}" as oposed to "jjjj${@}jjjjj" or any other variation.


what I tend to do as a workaround is

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


or not as good but ok in most cases something like

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






reply via email to

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