On Mon, May 27, 2024, at 8:58 PM, porterleete wrote: > The man page for printf says that for integer m, %m$ lets you > specify which argument that the conversion specification will use. > Similarly, using *m$ instead of * in a conversion specification lets > you specify which argument the * will pull from. This feature is > unimplemented in Bash. I am guessing that Bash is using either the ISO > C standard, or an older version of some mainstream compiler for printf > or some other standard
Neither. Bash's printf is based on the POSIX printf utility: https://pubs.opengroup.org/onlinepubs/9699919799/utilities/printf.html It also implements a few extensions, which are documented in the bash man page and manual. (IIRC there is also at least one undocumented extension.) > Fix: > Either update the documentation of what printf in bash actually does. > If printf is using a standard for printf other than "what the biggest > C compilers currently do", document which standard it's using or > update it to the newest standard used by gcc and clang. If it really > is just this one feature that's missing, add it in or document its > absence. The bash man page and manual already state: In addition to the standard printf(1) format specifications, printf interprets the following extensions: %b [...] %q [...] %Q [...] %(datefmt)T [...] I guess it could be more explicit, but "the standard printf(1) format specifications" refers to the POSIX standard for the printf *utility*. The C printf *function* is tangentially related but not directly relevant. -- vq