printf: Unterschied zwischen den Versionen

Aus Mikiwiki
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
 
(2 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 6: Zeile 6:


  $ <b>printf "%d\n" 0x9a9a</b>
  $ <b>printf "%d\n" 0x9a9a</b>
Wiederholung eines Zeichens (hier 66-mal das Zeichen "#") mit abschliessendem Zeilenumbruch.
$ <b>printf '#%.0s' {1..66} && printf "%s\n"</b>
##################################################################
$ <b>TRENNER="$(printf '#%.0s' {1..66})" && echo "${TRENNER}"</b>
##################################################################
$ <b>echo "$(printf '#%.0s' {1..66})"</b>
##################################################################


Wiederholung eines Zeichens (hier 80-mal das Zeichen "#").
Wiederholung eines Zeichens (hier 80-mal das Zeichen "#").
Zeile 11: Zeile 22:
  $ <b>CH="$(printf "%80s" "")" && printf "%s\n" "${CH// /#}"</b>
  $ <b>CH="$(printf "%80s" "")" && printf "%s\n" "${CH// /#}"</b>
  ################################################################################
  ################################################################################
Ausgabe von zwei Argumenten (hier "113" und "1") innerhalb einer Zeichenkette.
$ <b>printf '<ABCField field="%s.%s" value="0"/>\n' 113 1</b>
<ABCField field="113.1" value="0"/>


== FAQ ==
== FAQ ==

Aktuelle Version vom 15. Mai 2018, 21:27 Uhr

Der Shell-Befehl printf gibt eine formatierte Zeichenkette aus.

Verwendung

Umrechnung einer Hexadezimalzahl in eine Dezimalzahl.

$ printf "%d\n" 0x9a9a

Wiederholung eines Zeichens (hier 66-mal das Zeichen "#") mit abschliessendem Zeilenumbruch.

$ printf '#%.0s' {1..66} && printf "%s\n"
##################################################################
$ TRENNER="$(printf '#%.0s' {1..66})" && echo "${TRENNER}"
##################################################################
$ echo "$(printf '#%.0s' {1..66})"
##################################################################

Wiederholung eines Zeichens (hier 80-mal das Zeichen "#").

$ CH="$(printf "%80s" "")" && printf "%s\n" "${CH// /#}"
################################################################################

Ausgabe von zwei Argumenten (hier "113" und "1") innerhalb einer Zeichenkette.

$ printf '<ABCField field="%s.%s" value="0"/>\n' 113 1
<ABCField field="113.1" value="0"/>

FAQ

- : invalid option

Bei der Verwendung von printf in Bash-Skripten kann es vorkommen, dass jemand die Formatierungszeichenkette mit "-" (Bindestrich, Minus-Zeichen) beginnt. printf interpretiert dies als einen Parameter und

  • machte entweder etwas nicht beabsichtigtes
  • oder erzeugt die folgende Fehlermeldung
bash: printf: - : invalid option
printf: usage: printf [-v var] format [arguments]

Um dies zu verhindern, muss das Zeichen "-" entwertet werden. Dazu wird die Zeichenkette "--" als erstes Argument vor der Formatierungskette übergeben. Beispiel:

$ printf -- "- Name: %s" "$NAME"