[engima2] wget date --date

eendenteam

Addicted Member
Administrator
Moderator
Lid sinds
1 feb 2004
Berichten
6.293
Waarderingsscore
80
Punten
48
Leeftijd
122
We willen met het commando DATE de datum van vandaag, morgen en overmorgen vinden. Dat hebben we nodig om via een script elke dag een bepaald bestand te downloaden (via wget) waarbij die data (datums) in de bestandsnaam zitten.

De datum van vandaag vinden gaat goed via: date+"%Y%m%d".
Als we dat vandaag uitvoeren, krijgen we: 20090804

Om de datum voor morgen te achterhalen hebben we dit geprobeerd:

Code:
date +%Y-%m-%d|awk -F"-" '{ print $1$2($3+1)}'
helaas krijgen we dan 2009085 i.p.v. 20090805 (de laatste nul ontbreekt).
we willen dus iets vinden dat - indien de datum van de dag kleiner is dan 10 - dan dus die 0 er voor wordt gezet.

We hebben ook dit geprobeerd:
Code:
vandaag=`date +"%Y%m%d"`
morgen=$vandaag+1
echo $morgen
Als output krijgen we dan: 20090804+1

Wie helpt ons en weet de juiste syntax/code indien de datum van de dag kleiner is dan 10?
 
Tja, ik zou het niet weten of dat zo kan.
Maar denk aan het volgende.

Het DATE commando is bedoeld om de DATUM EN TIJD van dit moment weer te geven.
Of om die te veranderen in een andere.
Bij linux zitten die namelijk bij mekaar.
Als een pc boot neemt het OS de cmos date/time over in de system clock.
Die geeft daarna de date/time weer, en kan geupdated worden door NTP server zoals we weten.
De normale linux syntax om de date/tijd te zetten is bv date 06152215.
Dat staat voor June 15 22:15h.
Maar normaal gebruiken we date om de huidige date en time weer te geven.
Zoals jullie zeggen kun je daar verschillende formaten voor kiezen.

Maar zoals gezegd, ik ken geen commando om de dag van morgen weer te geven!
Tenzij je er met de hand of script gewoon eentje aan toevoegt voor je plan.

Grtz.
 
We hebben niet stil gezeten en gepuzzeld.
We hebben gevonden hoe je die 0 er tussen zet, namelijk zo:

Code:
date +%Y-%m-%d|awk -F"-" '{ print $1$2($3+1)}'|sed 's/.$/0&/'

We halen elke dag 6 bestanden. Het eerste bestand bevat de datum van vandaag in de bestandsnaam, de 2e de datum van morgen, de 3e de datum van overmorgen enz.

Zoiets als:

FILE0=`date +"%Y%m%d"_aa.gif`
FILE1=`date +%Y-%m-%d|awk -F"-" '{ print $1$2($3+1)}'`_bb.gif
FILE2=`date +%Y-%m-%d|awk -F"-" '{ print $1$2($3+2)}'`_cc.gif
FILE3=`date +%Y-%m-%d|awk -F"-" '{ print $1$2($3+3)}'`_dd.gif
FILE4=`date +%Y-%m-%d|awk -F"-" '{ print $1$2($3+4)}'`_ee.gif
FILE5=`date +%Y-%m-%d|awk -F"-" '{ print $1$2($3+5)}'`_ff.gif

Hoe laten we een #bin/sh script (voor de dreambox) nu controleren of de datum van vandaag of de datum op de volgende dagen kleiner is dan 10 want dan moet er met dus die 0 er tussen worden gezet.....?

Het kan wellicht simpel door het aantal karakters van FILE0 t/m FILE5 te tellen. Indien deze lengte 7 is dan moet er op de een na laatste plaats een 0 tussen worden gezet.
We gaan op zoek naar het lengte commando... Indien iemand een oplossing heeft dan graag!
 
Dat weet ik ook niet of dat gaat!

Zover ik kan nagaan wordt awk alleen gebruikt om tekst in een file te sorteren.
En uit te printen (naar het scherm).
Dan worden de variabelen gebruikt om de tekst kolommen in de file weer te geven.
Maar of dat trukje ook op een file-naam opgaat weet ik niet.

Grtz.
 
Weer stukje verder en hebben nu dit toegevoegd:

Code:
if [ "${#FILE0}" -eq 7 ]
then 
  FILE0=`date +%Y-%m-%d|sed 's/.$/0&/'`
fi

FILE0=$FILE0"_aa.gif"

if [ "${#FILE1}" -eq 7 ]
then 
  FILE1=`date +%Y-%m-%d|awk -F"-" '{ print $1$2($3+1)}'|sed 's/.$/0&/'`
fi

FILE1=$FILE1"_bb.gif"

en zo voor alle 6 de bestanden apart maar moet toch ook in 1 keer kunnen.
 



Hosting Fun

Advertenties

Terug
Bovenaan Onderaan