[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: OT: Bash-Skript und awk



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


Reply to: