So wiederholen Sie ein Zeichen N-mal mit printf

493
LouieV

Ich habe eine Funktion, die einen String übergeben. Ich möchte, dass diese Funktion diese Zeichenfolge *in einer Zeile auffüllt. Lass uns sagen, dass ich weitergeben foo barmöchte, dass es so etwas druckt

*************** *** foo bar *** *************** 

Ich bin in Schwierigkeiten geraten, wenn ich eine Zeichenkettenlänge auswerte und diese mit verwende printf. Hier ist was ich habe

install_block() { dir="$1" main_echo="*** $dir ***" length="${#main_echo}" pad=$(printf '%.0s*' ; echo) echo $pad echo $main_echo echo $pad } 
0
Zitat von Variablen! `echo $ main_echo`, wo Sternchen in` main_echo` stehen, schlägt mit einem Knall zurück. Kamil Maciorowski vor 5 Jahren 1
`dir =" foo bar "; main_echo = "*** $ dir ***"; echo "$ " ` Cyrus vor 5 Jahren 1

1 Antwort auf die Frage

0
glenn jackman

ich würde ... benutzen

pad=$(printf '%*s' $length "" | tr ' ' '*') 

oder jot(das "athena-jot" -Paket für Ubuntu installieren)

pad=$(jot -b '*' -s '' $length) 

Vergessen Sie auch nicht, Ihre Variablen zu zitieren

echo "$pad" echo "$main_echo" echo "$pad"