Date Problem einen Tag abziehen

mehlbox

mehlbox

Eroberer
Hallo zusammen,

habe ein Script Problem mit date ich möchte vom aktuellen Datum einen Tag abziehen und dieses in eine Variable schreiben und diese Variable dann benutzen um aus einer Datei Daten mit dem "reduzierten Datum" rauszulesen.

Habe leider keine Ahung vom Programmieren kann mir hier einer weiterhelfen.

Vielen Dank
 
Code:
DATE_DAY=$(date +%d)
YESTERDAY=$(( $DATE_DAY - 1 ))

hilft dir das erst einmal weiter?
 
Zuletzt bearbeitet:
Hallo
Du solltest schon schreiben welche Shell du zur Verfügung hast.
Nicht überall ist GNU-Date vorhanden.
Desweiteren ist es interessant, wie du das Format willst.
Datum von gestern mit GNU Date:
Code:
#Defaultformat:
VAR=$(date -d"1 day ago");
echo $VAR
 Sun Nov 25 13:53:21 CET 2007

Man date
Gruß Wolfgang
 
Hallo tuxlover,

danke genau so brauchte ich es

Vielen Dank

Schönen Tag noch
 
Hi ich nutze auch ein script (bash) mit einer date Variable.
Mein Problem ist das die dateien die ich kopieren möchte die endung test.(Tag Nr.) haben, z.b.
für heute.

Mein script macht aber aus der "006" nur eine "6":

#echo $YESTERDAY
#6

Resultat ist: test.6: No such file or directory
 
hi,

mit printf kannst du das formatieren wie du willst.

edit: Beispiel:
Code:
i=5
printf "%.3i" $i

Kann auch sein dass man %d statt %i verwenden sollte, weiss ich grad nich, aber die idee sollte klar sein.

mfg,
bytepool
 
Zuletzt bearbeitet:
Ich weiß ja nicht, was dein Skript da macht. Aber aus einem Dateinamen test.007 die Nullen mit auszugeben ist keine Zauberei.
Code:
a=test.007; 
echo ${a##*\.}
007
Printf stimmt als Alternative, allerdings mit
Code:
$ printf "%[b]0[/b]3d\n" 7
007
denn...
Code:
$ printf "%3d\n" 7
  7
;)

Gruß Wolfgang
 
Naja, deswegen ja der "." vor der 3. Bei 'floats' gibt das 3 Nachkommastellen, aber da 'ints' keine Nachkommastellen haben, heisst das dass er mindestens 3 Zahlen ausgeben soll.
Aber ich gestehe, ich war einfach zu faul nachzugucken wie es richtig ist ;)

mfg,
bytepool
 
Zuletzt bearbeitet:
Aber ich gestehe, ich war einfach zu faul nachzugucken wie es richtig ist ;)

mfg,
bytepool
Ist doch nicht das Problem, nur wenn ich Fließkomma mit integer verwende, (den Punkt habe ich ehrlicherweise übersehen) bekomm ich Magenkrämpfe. ;)

Gruß Wolfgang (der wohl manchmal zu konservativ penibel ist)
 
Ich glaube ihr hab das was miss verstanden.
Die Dateien werden jeden Tag um Mitternacht fertig geschrieben (sind sowas wie Log files).
Um 02.00 möchte ich sie von den Ziel Servern auf einen Server kopieren.
Die Dateinamen sind also test.[1-365], jeden Tag eine andere Endung.
Z.B.
test.001
test.002
test.014
test.365

Hier noch die Zeile die wichtig ist:
scp **********:/var/test.$(($DAY-1)) .

und die Variable:

DAY=`date +%j`
 
Ich glaube ihr hab das was miss verstanden.

Mhh, ich habe eher das Gefuehl dass es genau andersrum ist... Wir haben dir doch schon 2 verschiedene Loesungen gegeben, wo ist das Problem?

edit:
Achso, Wolfgangs erster Vorschlag passt nicht direkt auf das Problem das stimmt. Aber ich kenne mich mit variable expansion auch (noch) nicht aus und kann da nicht soviel zu sagen ;)
Aber es hilft im uebrigen wenn du ein wenig Beispiel code mitliefert, das macht das Verstaendnis normalerweise einiges einfacher ;)
Trotzdem, mit printf kriegst du das genauso hin wie du das willst, und wahrscheinlich geht's auch mit variable expansion...

mfg,
bytepool
 
Zuletzt bearbeitet:
Eben schonmal einen Thread weiter gehabt ...

Code:
scp root@XXX.XXX.XXX.XXX:/var/test.$(date -d"yesterday" +%j) .
 

Ähnliche Themen

Verzeichnis mit 1200 Dateien auf Verweise in Textdateien checken

sed - Bitte um Unterstützung

Hilfe für ein shell script

Shell-Skript Datum in einer Datai suchen

Fragen zu stty, quotes und Datein (flush)

Zurück
Oben