|
| At finde igår med sh Fra : Morten Guldager |
Dato : 08-02-06 08:20 |
|
Hejsa,
På en gammel UNIX kasse, som ikke er modtagelig for gnu tools,
skal jeg i et Bourne Shell program finde frem til hvilken dag
det var igår. (c kompiler har den naturligvis heller ikke)
Jeg har forsøgt mig med
IGAAR=`TZ=MET+24 date`
men den kan så ikke rigtig finde ud af tidszonen. (tror det er UTZ/GMT)
Så kunne jeg jo korrigere ved at skrive
TZ=MET+23 date
Men det holder jo kun indtil vi får sommertid.
Forslag til en simpel løsning?
/Morten
| |
Mogens Kjaer (08-02-2006)
| Kommentar Fra : Mogens Kjaer |
Dato : 08-02-06 08:51 |
|
Morten Guldager wrote:
> Hejsa,
>
> På en gammel UNIX kasse, som ikke er modtagelig for gnu tools,
> skal jeg i et Bourne Shell program finde frem til hvilken dag
> det var igår. (c kompiler har den naturligvis heller ikke)
Når du skriver "dag", mener du så år/måned/dag, ugedag eller hvad?
Den date, du har, hvad kan den så?
Min SGI IRIX (ikke gnu) date kan fx:
$ date +%Y
2006
$ date +%m
02
$ date +%d
08
Så kan man så lave aritmetik derfra. Husk skudår
Mogens
--
Mogens Kjaer, Carlsberg A/S, Computer Department
Gamle Carlsberg Vej 10, DK-2500 Valby, Denmark
Phone: +45 33 27 53 25, Fax: +45 33 27 47 08
Email: mk@crc.dk Homepage: http://www.crc.dk
| |
Ukendt (08-02-2006)
| Kommentar Fra : Ukendt |
Dato : 08-02-06 08:52 |
|
Morten Guldager wrote:
>
> Forslag til en simpel løsning?
Virker "date -d -1day"?
--
Kasper Dupont -- Rigtige mænd skriver deres egne backupprogrammer
#define _(_)"d.%.4s%."_"2s" /* This is my new email address */
char*_="@2kaspner"_()"%03"_("4s%.")"t\n";printf(_+11,_+6,_,6,_+2,_+7,_+6);
| |
Peter Makholm (08-02-2006)
| Kommentar Fra : Peter Makholm |
Dato : 08-02-06 09:01 |
|
Morten Guldager <Morten.Guldager@gmail.com> writes:
> Jeg har forsøgt mig med
>
> IGAAR=`TZ=MET+24 date`
Nej, MET+24 er ikke en korrekt tidszoneangivelse.
> Forslag til en simpel løsning?
Det ser ikk eud til at der er en simpel løsning med den date(1) der er
beskrevet i Posix. Du bliver vist nødt tiol at regne.
--
Peter Makholm | Emacs is the only modern general-purpose
peter@makholm.net | operating system that doesn't multitask
http://hacking.dk |
| |
Morten Guldager (09-02-2006)
| Kommentar Fra : Morten Guldager |
Dato : 09-02-06 08:08 |
|
2006-02-08 Peter Makholm wrote
> Morten Guldager <Morten.Guldager@gmail.com> writes:
>
>> Jeg har forsøgt mig med
>>
>> IGAAR=`TZ=MET+24 date`
>
> Nej, MET+24 er ikke en korrekt tidszoneangivelse.
>
>> Forslag til en simpel løsning?
>
> Det ser ikk eud til at der er en simpel løsning med den date(1) der er
> beskrevet i Posix. Du bliver vist nødt tiol at regne.
Nej tak, så hellere kode... En kollega fandt følgende på nettet:
#!/bin/sh
DH=`date +%D:%H`
s=-15
while [ $s -le 14 ]
do
s=`expr $s + 1`
[ `TZ=GMT$s date +%D:%H` = $DH ] && break
done
H=`date +%H`
s=`expr $s - 2 + 24`
end=`expr $s + 4`
while [ $s -le $end ]
do
s=`expr $s + 1`
[ `TZ=GMT$s date +%H` = $H ] && break
done
answer=`TZ=GMT$s date +"%Y%m%d"`
# Finally, check if we have gone past midnight during the run
[ `date +%D:%H` != $DH ] && exec $0
# We're done.
echo "$answer"
Det virker faktisk alle de steder jeg har testet det indtil videre.
Men helt vildt let forståeligt er det nu ikke, synes jeg.
/Morten
| |
Jan Birk (08-02-2006)
| Kommentar Fra : Jan Birk |
Dato : 08-02-06 13:22 |
|
> På en gammel UNIX kasse, som ikke er modtagelig for gnu tools,
> skal jeg i et Bourne Shell program finde frem til hvilken dag
> det var igår. (c kompiler har den naturligvis heller ikke)
På de fleste gamle Unix kasser findes awk. Hvis du har den, kan du måske
bruge awk's sysdate() som returnerer sekunder siden epoc og så trække en
døgns sekunder fra og vise resultatet med strftime()!
/Jan
| |
Morten Guldager (09-02-2006)
| Kommentar Fra : Morten Guldager |
Dato : 09-02-06 08:03 |
|
2006-02-08 Jan Birk wrote
>> På en gammel UNIX kasse, som ikke er modtagelig for gnu tools,
>> skal jeg i et Bourne Shell program finde frem til hvilken dag
>> det var igår. (c kompiler har den naturligvis heller ikke)
>
> På de fleste gamle Unix kasser findes awk. Hvis du har den, kan du måske
> bruge awk's sysdate() som returnerer sekunder siden epoc og så trække en
> døgns sekunder fra og vise resultatet med strftime()!
Umiddelbart lyder det jo ganske genialt.
Jeg skrev følgende awk program:
awk 'BEGIN {print strftime("%Y%m%d", systime()-3600*24)}'
Og på min linux virker det helt perfekt.
Men selv på en Solaris-9 fejler det:
# awk 'BEGIN {print strftime("%Y%m%d", systime()-3600*24)}'
awk: syntax error near line 1
awk: illegal statement near line 1
Det går cirka lige så dårligt på de rigtig gamle kasser jeg
bakser med.
/Morten
| |
Kristian Vilmann (09-02-2006)
| Kommentar Fra : Kristian Vilmann |
Dato : 09-02-06 10:05 |
|
Morten Guldager wrote:
> 2006-02-08 Jan Birk wrote
>
>>>På en gammel UNIX kasse, som ikke er modtagelig for gnu tools,
>>>skal jeg i et Bourne Shell program finde frem til hvilken dag
>>>det var igår. (c kompiler har den naturligvis heller ikke)
>>
>>På de fleste gamle Unix kasser findes awk. Hvis du har den, kan du måske
>>bruge awk's sysdate() som returnerer sekunder siden epoc og så trække en
>>døgns sekunder fra og vise resultatet med strftime()!
>
>
> Umiddelbart lyder det jo ganske genialt.
>
> Jeg skrev følgende awk program:
>
> awk 'BEGIN {print strftime("%Y%m%d", systime()-3600*24)}'
>
> Og på min linux virker det helt perfekt.
>
> Men selv på en Solaris-9 fejler det:
>
> # awk 'BEGIN {print strftime("%Y%m%d", systime()-3600*24)}'
> awk: syntax error near line 1
> awk: illegal statement near line 1
Nu har jeg ikke lige en kørende Solaris indenfor rækkevidde, men prøv at
se om ikke der ligger en brugbar awk et sted udenfor path. /usr/ucb
eller noget deromkring
> Det går cirka lige så dårligt på de rigtig gamle kasser jeg
> bakser med.
Bare sådan af ren nysgerrighed: Hvor gamle er de, og hvad er det for
nogle boxe?
/k
| |
Mogens Kjaer (09-02-2006)
| Kommentar Fra : Mogens Kjaer |
Dato : 09-02-06 10:20 |
|
Kristian Vilmann wrote:
....
> Nu har jeg ikke lige en kørende Solaris indenfor rækkevidde, men prøv at
> se om ikke der ligger en brugbar awk et sted udenfor path. /usr/ucb
> eller noget deromkring
Solaris (SunOS 5.7):
$ /usr/xpg4/bin/awk 'BEGIN {print strftime("%Y%m%d",systime()-3600*24)}'
/usr/xpg4/bin/awk: line 0 (): variable "" cannot be used as a function
$ /usr/bin/awk 'BEGIN {print strftime("%Y%m%d",systime()-3600*24)}'
awk: syntax error near line 1
awk: illegal statement near line 1
Solaris 10 skriver det samme.
SGI IRIX:
$ awk 'BEGIN {print strftime("%Y%m%d",systime()-3600*24)}'
Calling undefined function strftime
Source line number 1
Mogens
--
Mogens Kjaer, Carlsberg A/S, Computer Department
Gamle Carlsberg Vej 10, DK-2500 Valby, Denmark
Phone: +45 33 27 53 25, Fax: +45 33 27 47 08
Email: mk@crc.dk Homepage: http://www.crc.dk
| |
Thorbjørn Ravn Ander~ (09-02-2006)
| Kommentar Fra : Thorbjørn Ravn Ander~ |
Dato : 09-02-06 10:22 |
|
Morten Guldager <Morten.Guldager@gmail.com> writes:
> Det går cirka lige så dårligt på de rigtig gamle kasser jeg
> bakser med.
Kan din date udskrive klokken nu som sekunder?
--
Thorbjørn Ravn Andersen
| |
Morten Guldager (09-02-2006)
| Kommentar Fra : Morten Guldager |
Dato : 09-02-06 16:57 |
|
2006-02-09 Thorbjørn Ravn Andersen wrote
> Morten Guldager <Morten.Guldager@gmail.com> writes:
>
>> Det går cirka lige så dårligt på de rigtig gamle kasser jeg
>> bakser med.
>
> Kan din date udskrive klokken nu som sekunder?
Nixen.
/Morten
| |
Thorbjørn Ravn Ander~ (09-02-2006)
| Kommentar Fra : Thorbjørn Ravn Ander~ |
Dato : 09-02-06 19:53 |
|
Morten Guldager <Morten.Guldager@gmail.com> writes:
> > Kan din date udskrive klokken nu som sekunder?
>
> Nixen.
Kan du skrive et C program?
Noget med gettimeofday(2) og sprintf(3).
--
Thorbjørn Ravn Andersen
| |
Morten Guldager (09-02-2006)
| Kommentar Fra : Morten Guldager |
Dato : 09-02-06 19:59 |
|
2006-02-09 Thorbjørn Ravn Andersen wrote
> Morten Guldager <Morten.Guldager@gmail.com> writes:
>
>> > Kan din date udskrive klokken nu som sekunder?
>>
>> Nixen.
>
> Kan du skrive et C program?
>
> Noget med gettimeofday(2) og sprintf(3).
Ingen compilere installeret.
/Morten
| |
Thorbjørn Ravn Ander~ (09-02-2006)
| Kommentar Fra : Thorbjørn Ravn Ander~ |
Dato : 09-02-06 21:26 |
|
Morten Guldager <Morten.Guldager@gmail.com> writes:
> Ingen compilere installeret.
Er kassen binært kompatibel med noget der HAR en compiler installeret?
Må man se manualsiden til date?
--
Thorbjørn Ravn Andersen
| |
Peter Makholm (09-02-2006)
| Kommentar Fra : Peter Makholm |
Dato : 09-02-06 10:25 |
|
Morten Guldager <Morten.Guldager@gmail.com> writes:
> Jeg skrev følgende awk program:
>
> awk 'BEGIN {print strftime("%Y%m%d", systime()-3600*24)}'
>
> Og på min linux virker det helt perfekt.
Det gør det ikke på min hvor awk er mawk. Mon ikke din awk er gawk på
linux?
brother@pma-linux$ awk 'BEGIN {print strftime("%Y%m%d",systime()-3600*24)}'
awk: line 2: function strftime never defined
awk: line 2: function systime never defined
brother@pma-linux$
--
Peter Makholm | I congratulate you. Happy goldfish bowl to you, to
peter@makholm.net | me, to everyone, and may each of you fry in hell
http://hacking.dk | forever
| -- The Dead Past
| |
Morten Guldager (09-02-2006)
| Kommentar Fra : Morten Guldager |
Dato : 09-02-06 16:57 |
|
2006-02-09 Peter Makholm wrote
> Morten Guldager <Morten.Guldager@gmail.com> writes:
>
>> Jeg skrev følgende awk program:
>>
>> awk 'BEGIN {print strftime("%Y%m%d", systime()-3600*24)}'
>>
>> Og på min linux virker det helt perfekt.
>
> Det gør det ikke på min hvor awk er mawk. Mon ikke din awk er gawk på
> linux?
Helt bestemt. Sådan en default SuSE installation.
/Morten
| |
|
|