Sokol <mailist@sokol-web.de> (Sa 10 Nov 2007 01:04:44 CET): > Hallo Liste, > > ich schreibe gerade ein Bash-Skript um eine Datei zu sichern und > treffe nun auf einen Fehler, den ich gerade garnicht verstehen kann. > > Das Skript: > > j=0; > while [ $j -le 31 ]; do > let "j++"; > j=$(echo $j | awk '{if ($1 < 10) print 0$1;else print $1}'); #Alle > einstelligen Zahlen sollen eine 0 vorangestellt bekommen > sleep 2; > echo $j; > done > > Ich bekomme folgende Ausgabe: > 01 > 02 > 03 > 04 > 05 > 06 > 07 > 08 > ./test: line 4: let: 08: value too great for base (error token is "08") > 008 > ./test: line 4: let: 008: value too great for base (error token is "008") > 0008 > ./test: line 4: let: 0008: value too great for base (error token is "0008") > ... > > Ich frage mich, wieso ich bei der 8 einen Fehler bekomme. > Interpretiert awk die 8 in einem anderen Zahlensystem? Ideen? > Verbesserungsvorschläge sind herzlich willkommen! Ja, 08 gibt's nicht. Aber nicht der AWK hat das Problem, sondern die Shell beim while [ $j -lt 31 ] Abgesehen davon würde ich printf "%02d" $j verwenden, ohne AWK, einfach in der Shell. -- Heiko
Attachment:
signature.asc
Description: Digital signature