[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:+"${@}"}
- 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