2023-09-01 07:54:02 -0500, Eric Blake via austin-group-l at The Open Group: [...] > > Well in all case %b can not change semantic in the bash script, since it is > > there for so long, even if it depart from python, perl, libc, it is > > unfortunate but that's the way it is, nobody want a semantic change, and on > > next routers update, see the all internet falling appart :-) > > How many scripts in the wild actually use %b, though? And if there > are such scripts, anything we can do to make it easy to do a drop-in > replacement that still preserves the old behavior (such as changing %b > to %#s) is going to be easier to audit than the only other > currently-portable alternative of actually analyzing the string to see > if it uses any octal or \c escapes that have to be re-written to > portably function as a printf format argument. [...]
FWIW, a "printf %b" github shell code search returns ~ 29k entries (https://github.com/search?q=printf+%25b+language%3AShell&type=code&l=Shell) That likely returns only a small subset of the code that uses printf with %b inside the format and probably a few false positives, but that gives many examples of how printf %b is used in practice. printf %b is also what all serious literature about shell scripting has been recommending to use in place of the unportable echo -e (or XSI echo, or print without -r). That includes the POSIX standard which has been recommending using printf instead of the non-portable echo for 30 years. So that change will also invalidate all those. It will take a while before %#s is supported widely enough that %b can be safely replaced with %#s -- Stephane