Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
-
nepos
- Beiträge: 5238
- Registriert: 05.01.2005 10:08:12
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
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.
-
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
-
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.
-
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}"
-
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}