~ $ set -f ~ $ foo=$(printf "%*s\n" 80 " " | tr " " "*") ; echo $foo ********************************************************************************
~ $ printf -v v '%*s' 200 ' ' ; v=${v// /\*} ; echo $v ******************************************************************************************************************************************************************************************************** On Sat, Jan 25, 2025, 2:41 PM Ross <r...@smith-bath.co.uk> wrote: > > Configuration Information [Automatically generated, do not change]: > Machine: x86_64 > OS: linux-gnu > Compiler: gcc > Compilation CFLAGS: -g -O2 -fno-omit-frame-pointer -mno-omit-leaf- > frame-pointer -flto=auto -ffat-lto-objects -fstack-protector-strong - > fstack-clash-protection -Wformat -Werror=format-security -fcf- > protection -Wall > uname output: Linux X220-Bravo 6.8.0-51-generic #52-Ubuntu SMP > PREEMPT_DYNAMIC Thu Dec 5 13:09:44 UTC 2024 x86_64 x86_64 x86_64 > GNU/Linux > Machine Type: x86_64-pc-linux-gnu > > Bash Version: 5.2 > Patch Level: 21 > Release Status: release > > Description: > From the command line > printf "%*s\n" 80 " " | tr " " "*" > does just what I'd expect generating a banner line of asterisks. > > However: > foo=$(printf "%*s\n" 80 " " | tr " " "*") > echo $foo > acts very differently; it seems to perform ls or something similar. > > The same occurs with the more standard printf "%80s" form. > > Repeat-By: > As above. > > Fix: > Unknown. > > >