~ $ 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.
>
>
>

Reply via email to