printf und die führenden leerzeichen

10/10/2007 - 12:36 von Matthias Dort | Report spam
Hallo,

folgendes Problem. Bei printf unter C funktioniert folgendes.
events_titel="bla"
gesamt=2
# Auffuellen mit Zero klappt
echo `/usr/bin/printf "%03d" $gesamt` " - " $events_titel
# Auffuellen mit leerzeichen klappt leider nicht
echo `/usr/bin/printf "%3d" $gesamt` " - " $events_titel
Ausgabe:

./test
002 - bla
2 - bla
Leider verhaelt sich printf im shell-script anders als printf unter plain c.

Es soll eine numerische Variable immer 2-stellig rechtsbuendig ausgegeben
werden. Hat jemand eine Idee?

Vielen Dank!

Gruss/2
Matthias
 

Lesen sie die antworten

#1 Paul Hink
10/10/2007 - 13:10 | Warnen spam
Matthias Dort wrote:

folgendes Problem. Bei printf unter C funktioniert folgendes.
events_titel="bla"
gesamt=2
# Auffuellen mit Zero klappt
echo `/usr/bin/printf "%03d" $gesamt` " - " $events_titel
# Auffuellen mit leerzeichen klappt leider nicht
echo `/usr/bin/printf "%3d" $gesamt` " - " $events_titel
Ausgabe:

./test
002 - bla
2 - bla
Leider verhaelt sich printf im shell-script anders als printf unter
plain c.



Nein, aber die Shell schneidet die führenden Leerzeichen weg. Abhilfe:
Anführungszeichen um das Kommando in Backticks. Also:

echo "`/usr/bin/printf "%3d" $gesamt`" " - " $events_titel

Aber warum so umstàndlich? Einfacher und sauberer wàre z.B.:

/usr/bin/printf "%3d - %s" "$gesamt" "$events_titel"

Ähnliche fragen