Probleme bei Addition in einem Shell-Script

JohnDoe

Erfahrenes Mitglied
Hallo Leute,

ich habe folgendes Script gebaut:
Der Zweck soll sein, Bilder von einem Server holen, die nach Datum sortiert sind.
Er baut auch das erste Datum ordentlich auf aber bei der Addition kommt ein Fehler.
Somit versucht er ab der zweiten Schleife ein Bild von 1970 herunterzuladen.
Ich bin noch ein ziemlicher Anfänger im Scripten. Könnt ihr mir bei dem Problem helfen?
Code:
#!/bin/sh
startdatum='12/31/04'

inkrementel_sekunden=`date --date="$startdatum" +%s`
end_sekunden=`date +%s`

while [ $inkrementel_sekunden -le $end_sekunden ]
do
  #echo `date -d '1970-01-01 UTC '$inkrementel_sekunden' seconds' +"%Y"`
  year=`date -d '1970-01-01 UTC '$inkrementel_sekunden' seconds' +"%Y"`
  month=`date -d '1970-01-01 UTC '$inkrementel_sekunden' seconds' +"%m"`
  day=`date -d '1970-01-01 UTC '$inkrementel_sekunden' seconds' +"%d"`
  wget http://www.url.com/comics/$year$month$day.jpg
  inkrementel_sekunden=$inkrementel_sekunde + 86400
done

Danke im voraus...
 
Hi.

Um arithmetische Operationen mit Werten in der Shell durchzuführen gibt es 2 Möglichkeiten:

Bash:
x=5
let x=x+5  # 1. Variante
echo $x
x=$((x+6))  # 2. Variante
echo $x

Oder es geht auch implizit indem du die Variable vorher als Integer deklarierst:
Bash:
declare -i x=5
x=x+5

Siehe "Arithmetic Expansion" und "Arithmetic Evaluation" in 'man bash' :google:

Gruß

PS:
 
Zuletzt bearbeitet:
Danke für deine Antwort. Das Declare hat mich weitergebracht, wobei bei dem eigentlichen Fehler auch die man nicht geholfen hätte, sondern ein Schlag auf den Hinterkopf.
Ich habe in der Zeile mit der Addition bei der Variable inkrementel_sekunden das n einmal vergessen.
Jedenfalls für alle, die es mal brauchen, hier das funktionierende Script picturedownload.sh:

Code:
#!/bin/sh
startdatum='12/31/04'

#inkrementel_sekunden=`date --date="$startdatum" +%s`
declare -i inkrementel_sekunden=`date --date="$startdatum" +%s`
end_sekunden=`date +%s`

while [ $inkrementel_sekunden -le $end_sekunden ]
do
  #echo `date -d '1970-01-01 UTC '$inkrementel_sekunden' seconds' +"%Y"`
  year=`date -d '1970-01-01 UTC '$inkrementel_sekunden' seconds' +"%Y"`
  month=`date -d '1970-01-01 UTC '$inkrementel_sekunden' seconds' +"%m"`
  day=`date -d '1970-01-01 UTC '$inkrementel_sekunden' seconds' +"%d"`
  echo $day
  wget http://www.url.com/comics/$year$month$day.jpg
  inkrementel_sekunden=inkrementel_sekunden+86400
done
 
Zuletzt bearbeitet:
Zurück