[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}"
else
builtin printf "address@hidden"
fi
}
or not as good but ok in most cases something like
printf "%q" ${1:+"address@hidden"}
- printf %q represents null argument as empty string., Dan Douglas, 2013/01/11
- Re: printf %q represents null argument as empty string.,
John Kearney <=
- Re: printf %q represents null argument as empty string., Dan Douglas, 2013/01/11
- Re: printf %q represents null argument as empty string., John Kearney, 2013/01/11
- Re: printf %q represents null argument as empty string., Dan Douglas, 2013/01/11
- Re: printf %q represents null argument as empty string., Dan Douglas, 2013/01/12
- Re: printf %q represents null argument as empty string., John Kearney, 2013/01/12
- Re: printf %q represents null argument as empty string., Chet Ramey, 2013/01/12
- Re: printf %q represents null argument as empty string., John Kearney, 2013/01/12