Shell-Skript: um einen Monat rueckwaerts rechnen [gelöst]

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Shell-Skript: um einen Monat rueckwaerts rechnen [gelöst]

Beitrag von nepos » 01.04.2005 12:24:22

Hallo zusammen!

Mal die dumme Frage, wie rechne ich in nem Shell-Skript am besten einen Monat rueckwaerts und mache daraus einen Datumsstring der Form 032005?
Fuer den aktuellen Monat kriege ich das ja ganz simpel ueber

Code: Alles auswählen

date +%m%Y
Aber wir kann ich damit ohne zu grossen Akt einen Monat rueckwaerts gehen?
Danke fuer eure Tipps!

Ciao,
Matthias
Zuletzt geändert von nepos am 01.04.2005 13:16:31, insgesamt 1-mal geändert.

Benutzeravatar
GaRdoHq
Beiträge: 83
Registriert: 15.10.2003 00:00:24

Beitrag von GaRdoHq » 01.04.2005 12:36:00

Kann es nicht auch ein Perl-Skript sein?
Das würde die Sache erheblich vereinfachen.
Open your mind, use open source

Benutzeravatar
mauser
Beiträge: 1854
Registriert: 27.01.2005 22:34:48

Beitrag von mauser » 01.04.2005 12:40:20

hi,

Code: Alles auswählen



#!/bin/bash
monat=$(date +%m)
jahr=$(date +%Y)
let letzter_monat=$monat-1
echo $letzter_monat
das geht.. musst halt nur noch das jahr dahinter packen..
mfg
Mauser

nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Beitrag von nepos » 01.04.2005 12:41:06

In Perl wuesst ichs auch ;)
Koennte das natuerlich ueber Perl und Backticks in der Shell machen, aber mich wuerds auch mal interessieren, ob das ned auch ohne Perl geht, weil ich das des oefteren mal brauche.

nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Beitrag von nepos » 01.04.2005 12:42:01

mauser hat geschrieben:hi,

Code: Alles auswählen



#!/bin/bash
monat=$(date +%m)
jahr=$(date +%Y)
let letzter_monat=$monat-1
echo $letzter_monat
das geht.. musst halt nur noch das jahr dahinter packen..
mfg
Mauser
Hm, danke dir, aber dann Fall ich im Januar auf die Schnauze ;)
Aber ich glaube ich weiss nun, wie ich das am besten mache.
Danke fuer die Tipps.

Benutzeravatar
Savar
Beiträge: 7174
Registriert: 30.07.2004 09:28:58
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Berlin

Beitrag von Savar » 01.04.2005 12:48:36

dann machs halt so:
/EDIT!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Da fehlt etwas... unten also korrigiert

Code: Alles auswählen

#!/bin/bash
monat=$(date +%m)
jahr=$(date +%Y)
if [ $monat -eq 1 ]
then
     monat=12
     let jahr=jahr-1
else
     let monat=monat-1
fi

echo "${monat}${jahr}" 
MODVOICE/MYVOICE
Debianforum Verhaltensregeln
Log Dateien? -> NoPaste

nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Beitrag von nepos » 01.04.2005 13:16:13

Jo, so hab ichs nun :)
Nur um ne Kleinigkeit erweitetert, da ich beim Monat ne fuehrende Null brauch, wenn der kleiner 10 is:

Code: Alles auswählen

  # Einen Monat zurueckrechnen

  MONTH=`date +%m`
  YEAR=`date +%Y`

  # Falls Januar, ein Jahr zurueckgehen
  if [ $MONTH == 01 ]; then
    MONTH=12
    YEAR=$(($YEAR - 1))
  else
    MONTH=$(($MONTH -1))
  fi

  # Fuehrende Null einfuegen, falls Monat kleiner als 10
  if [ $MONTH -lt 10 ]; then
    MONTH=0${MONTH}
  fi

  # String zusammenbauen
  DATESTR=${MONTH}${YEAR}

Antworten