PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : BASH: 00 - 10 Zählen lassen



RedNuX
22-04-2004, 12:25
Hi Ich habe n kleines Problem mit meinem Zähler.

Und zwar soll er bei Zahlen die kleiner als 100 sind ein Nullen anhängen und bei Zahlen die kleiner als 10 sind zwei nullan anhängen...



#! /bin/bash

A="001";
E="110";

while [ $A -le $E ]
do
echo "$A";
A=`expr $A + 1`
done


Wie kann ich das realisieren?

fork
22-04-2004, 17:14
Das geht z. B. mit printf

zahl=1
printf "%03d" $zahl

RedNuX
22-04-2004, 17:32
Erstmal danke,nur muss ich den inhalt einer Variablen mit den Nullen füllen. Also der Output alleine reicht nicht aus. Gibts da noch eine Möglichkeit?

fork
22-04-2004, 17:39
Kommandoersetzung wie üblich ...
zahl=1
ZahlMitNullen=$(printf "%03d" $zahl)

RedNuX
22-04-2004, 18:04
erstmal ein danke für deine Hilfe!

Also mein Paar Zeilen code...



#! /bin/bash

A=001;
E=100;

while [ $A -le $E ]
do
#WGET=`wget -r -l1 -U Mozilla -A jpg -L http://www.wallpapershq.com/cat/nature/forets/forets_$A`;
A=$(printf %.3d $(($A+1)));
done


und als Problem erhalte ich beim Ausführen jedesmal:



./wget.sh: line 1: 008: value too great for base (error token is "008")
./wget.sh: line 5: [: -lt: unary operator expected

fork
22-04-2004, 19:28
Das rechnet mit Zahlen die fuehrende Nullen haben passt der bash wohl nicht. Schreib' den printf erst unmittelbar dort rein wo Du die führenden Nullen brauchst, d. h. als $( ) in den wget - Befehl.

RedNuX
22-04-2004, 23:45
Ein Danke schön!

Ich habe es dann mit Perl gemacht...



#!/usr/bin/perl
my $start = 1;
my $ende = 120;


for (; $start <= $ende; $start++) {

my $variable = sprintf("%03i",$start);
system("wget -U Mozilla -A jpg http://www.wallpapershq.com/cat/nature/forets/forets_$variable.jpg");

}

-danke-

RapidMax
24-04-2004, 15:54
for a in `seq -w 1 100`; do echo $a; done

Gruss, Andy

Thomas Engelke
29-04-2004, 10:04
TIMTOWTDI-Perl:


map{system("wget -U Mozilla -A jpg http://www.wallpapershq.com/cat/nature/forets/forets_$_.jpg");} 001..120;

Oder einfach über /bin/bash:


for f in `seq -w 1 120`; do wget -U Mozilla -A jpg http://www.wallpapershq.com/cat/nature/forets/forets_$f.jpg; done;

TME