Re: bin/60499: printf(1) doesn't support positional arguments (%n$...)
"Valery Ushakov via gnats" <[email protected]> Sat, 25 Jul 2026 08:50:02 +0000 (UTC)
| Newsgroups | gmane.os.netbsd.bugs |
|---|---|
| Message-ID | <[email protected]> |
The following reply was made to PR bin/60499; it has been noted by GNATS. From: Valery Ushakov <[email protected]> To: [email protected] Cc: Subject: Re: bin/60499: printf(1) doesn't support positional arguments (%n$...) Date: Sat, 25 Jul 2026 11:47:09 +0300 On Sat, Jul 25, 2026 at 02:25:01 +0000, Robert Elz via gnats wrote: > | printf(1) doesn't seem to support positional parameters "%n$..." > | Issue 8 seems to prescribe it: > > It does. If it didn't, we would most likely have support! > > The problem is that I simply find the spec in POSIX absurd, so rather > that implement that, I implemented (committed really) nothing. I'm confused... "It does" and "implemented nothing" is kinda contradictory. $ /usr/bin/printf '%s %s\n' a b a b $ /usr/bin/printf '%2$s %1$s\n' a b printf: %2$: invalid directive > It wouldn't however handle people who have decided that printf(1)'s > positional params can be (ab)used to do all kinds of other tricks, like > the one you are attempting above, Guilty as charched. But I often find implicit loop in printf massively convenient :) > there's just a little less opportunity to show off just > how clever you are. I don't think our shell is easily impressed, it's seen worse, and no-one else sees those snippets of shell code that I type into my emacs buffer only to immediately C-u M-| sh <RET> it. -uwe