printf: Unterschied zwischen den Versionen

Aus Mikiwiki
Wechseln zu: Navigation, Suche
(Verwendung)
Zeile 11: Zeile 11:
 
  $ <b>CH="$(printf "%80s" "")" && printf "%s\n" "${CH// /#}"</b>
 
  $ <b>CH="$(printf "%80s" "")" && printf "%s\n" "${CH// /#}"</b>
 
  ################################################################################
 
  ################################################################################
 +
 +
== 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:
 +
 +
$ <b>printf -- "- Name: %s" "$NAME"</b>
  
  
 
{{cat|Shell-Befehl}}
 
{{cat|Shell-Befehl}}
 
{{cat|Zeichenkette}}
 
{{cat|Zeichenkette}}

Version vom 27. Juni 2014, 09:15 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 80-mal das Zeichen "#").

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

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"