GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So wiederholen Sie einen Bindestrich (Bindestrich) in der Shell

Die hilfreiche Antwort von John1024 bietet eine generische Lösung, die zeigt, wie Optionen von Operanden für all disambiguiert werden POSIX-ähnliche Dienstprogramme.

Im vorliegenden Fall ist die einfachste Lösung (funktioniert nicht nur in bash , sondern auch in ksh und zsh ):

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

Platzierung von %.0s vorher die - vermeidet die Ausgabe eines anfänglichen - mit einer Option verwechselt werden.

Leicht optimiert:

printf '%.s-' {1..100}


Ich würde empfehlen, einen traditionellen for zu verwenden -Schleife, da keine Unterprozesse erzeugt oder 100 Argumente erweitert werden müssen:

N=100
for((i = 0; i < $N; ++i)); do
  printf -
done

Es ist merkwürdig, dass printf -%s löst "ungültige Option" aus, aber printf - nicht. Um vielleicht besonders sicher zu sein, könnten Sie printf %s - tun .


Verwenden Sie einen for Schleife und Nummernkreis:

for i in {1..10}; 
    do echo "-"; 
done

Oder in einer einzelnen Zeile:

for i in {1..10}; 
    do echo -n "-"; 
done

was ---------- ausgibt .

BEARBEITEN :Das war vor Ihrem printf bearbeiten.


Dies wirft einen Fehler:

$ printf '-%.0s' {1..100}; echo ""
bash: printf: -%: invalid option
printf: usage: printf [-v var] format [arguments]

Dies funktioniert gut unter bash :

$ printf -- '-%.0s' {1..100}; echo ""
----------------------------------------------------------------------------------------------------

Versuchen Sie für andere Shells:

printf -- '-%.0s' $(seq 100); echo ""

Das Problem war printf erwartet das - startet eine Option. Wie bei Unix/POSIX-Dienstprogrammen in dieser Art von Situation üblich, -- Signale an printf keine Optionen mehr zu erwarten.


Linux
  1. Wie überprüfe ich, ob eine Shell angemeldet/interaktiv/Batch ist?

  2. Wie erstelle ich eine temporäre Datei im Shell-Skript?

  3. Wie kann man die Suche in Dash beschleunigen?

  4. So ändern Sie die Shell unter Linux

  5. Wie kann man bei der Verwendung von printf Sonderzeichen im Shell-Skript maskieren?

So installieren Sie Dash Framework in Python unter Linux

So installieren Sie Linux Bash Shell unter Windows 10

So ändern Sie eine Benutzer-Shell in Linux

So installieren und verwenden Sie Nu Shell unter Linux

Wie verwende ich if-else in Shell-Skripten?

Wie führe ich einen Befehl in einem Shell-Skript aus?