350 Stimmen

Wie kann ich ein Zeichen in Bash wiederholen?

Wie könnte ich das tun mit echo ?

perl -E 'say "=" x 100'

557voto

dogbane Punkte 253146

Sie können verwenden:

printf '=%.0s' {1..100}

Wie das funktioniert:

Bash expandiert {1..100}, so dass der Befehl wird:

printf '=%.0s' 1 2 3 4 ... 100

Ich habe das Format von printf auf =%.0s was bedeutet, dass es immer eine einzelne = unabhängig davon, welches Argument angeführt wird. Daher druckt es 100 = s.

130voto

Kein einfacher Weg. Aber zum Beispiel:

seq -s= 100|tr -d '[:digit:]'
# Editor's note: This requires BSD seq, and breaks with GNU seq (see comments)

Oder vielleicht eine standardkonforme Art:

printf %100s |tr " " "="

Außerdem gibt es eine tput rep aber die mir zur Verfügung stehenden Terminals (xterm und linux) scheinen es nicht zu unterstützen:)

63voto

Eugene Yarmash Punkte 130008

Es gibt mehr als eine Möglichkeit, das zu tun.

Verwendung einer Schleife:

  • Die Klammererweiterung kann mit ganzzahligen Literalen verwendet werden:

    for i in {1..100}; do echo -n =; done    
  • Eine C-ähnliche Schleife erlaubt die Verwendung von Variablen:

    start=1
    end=100
    for ((i=$start; i<=$end; i++)); do echo -n =; done

Die Verwendung des printf eingebaut:

printf '=%.0s' {1..100}

Wenn Sie hier eine Genauigkeit angeben, wird die Zeichenkette so abgeschnitten, dass sie in die angegebene Breite passt ( 0 ). Unter printf die Formatzeichenkette wiederverwendet, um alle Argumente zu verbrauchen, wird einfach Folgendes gedruckt "=" 100 Mal.

Verwendung von head ( printf , etc) und tr :

head -c 100 < /dev/zero | tr '\0' '='
printf %100s | tr " " "="

18voto

Tim Punkte 13644

Es gibt keinen einfachen Weg. Vermeiden Sie Schleifen mit printf und Substitution.

str=$(printf "%40s")
echo ${str// /rep}
# echoes "rep" 40 times.

5voto

loafoe Punkte 363

In bash 3.0 oder höher

for i in {1..100};do echo -n =;done

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X