/ Forside / Teknologi / Operativsystemer / Linux / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Linux
#NavnPoint
o.v.n. 11177
peque 7911
dk 4814
e.c 2359
Uranus 1334
emesen 1334
stone47 1307
linuxrules 1214
Octon 1100
10  BjarneD 875
problemer med if statement i shell-script
Fra : jesper rønn


Dato : 19-11-01 23:02

Hej NG.
nedenstående script skulle gerne gøre mig i stand til automatisk at opdatere
min lokale php manual på min linuxbox.
If-sætningen skal kun udføres hvis den hentede tar-fil er nyere end det
lokale dir.

If-sætningen virker dog ikke. Jeg vil sammenligne de to awk-udtryk: En stat
giver:

$ stat -t php_manual_en.tar.gz
php_manual_en.tar.gz 1121672 2200 81b4 500 500 905 1517764 1 0 0
1006207245 1006202042 1006202042 4096
$ stat -t php_manual_en.tar.gz | awk {'print $12'}
1006207245

Og det er netop dette tal der for hvert awk-udtryk skal sammenlignes.
Nogen forslag?


På forhånd tak,

Jesper Rønn
www.fanklubben.dk <= fjollet website

==========output==========
$ ./phpmanual.sh
--23:00:43-- http://se.php.net/distributions/manual/php_manual_en.tar.gz
=> `php_manual_en.tar.gz'
Connecting to se.php.net:80... connected!
HTTP request sent, awaiting response... 200 OK
Length: 1,121,672 [application/x-tar]
Server file no newer than local file `php_manual_en.tar.gz' -- not
retrieving.

awk: cmd. line:2: fatal: cannot open file `-t' for reading (No such file or
directory)
update OK!
==========script===========

#!/bin/bash

# get recent manuals from web, and make local edition up-to-date
# $Id$

FILE=php_manual_en.tar.gz
DIR=phpmanual

cd /var/www/html/ref
wget --timestamping
http://se.php.net/distributions/manual/php_manual_en.tar.gz

if stat -t $FILE | awk {'print $12'} > stat -t $DIR | awk {'print $12'}
then
cd $DIR
tar xzf ../$FILE *
echo 'update OK!'
fi







 
 
Leo Laursen (20-11-2001)
Kommentar
Fra : Leo Laursen


Dato : 20-11-01 00:24

Mon, 19 Nov 2001 23:02:22 +0100, skrev jesper rønn
<jesperdrengen@my-deja.com>:
> awk: cmd. line:2: fatal: cannot open file `-t' for reading (No such file or
> directory)

> #!/bin/bash

> # get recent manuals from web, and make local edition up-to-date
> # $Id$

> FILE=php_manual_en.tar.gz
> DIR=phpmanual

> cd /var/www/html/ref
> wget --timestamping
> http://se.php.net/distributions/manual/php_manual_en.tar.gz

> if stat -t $FILE | awk {'print $12'} > stat -t $DIR | awk {'print $12'}
> then
> cd $DIR
> tar xzf ../$FILE *
> echo 'update OK!'
> fi

Hvad med:
if $(stat -t $FILE | awk {'print $12'}) > $(stat -t $DIR | awk {'print $12'})

$(komando) output fra komando (alternativt `komando`)

Leo
--
I'd be a poorer man if I'd never seen an eagle fly.
      -- John Denver
[I saw an eagle fly once. Fortunately, I had my eagle fly swatter handy. Ed.]

jesper rønn (20-11-2001)
Kommentar
Fra : jesper rønn


Dato : 20-11-01 07:37


"Leo Laursen" <l.laursen@mail1.stofanet.dk> wrote in message
news:9tc4bb$kht$1@sunsite.dk...
> Hvad med:
> if $(stat -t $FILE | awk {'print $12'}) > $(stat -t $DIR | awk {'print
$12'})
>
> $(komando) output fra komando (alternativt `komando`)
>
> Leo
Tak for tippet. Nu evaluerer den udtrykkene som den skal.
Desværre kan jeg nu se et andet problem:

if $(stat -t $FILE | awk {'print $12'}) > $(stat -t $DIR | awk
{'print $12'})

"større end"-tegnet virker "forkert". Den forsøger nu at skrive ned i en fil
med navnet der evalueres af
$(stat -t $DIR | awk {'print $12'})

Hvordan skriver jeg "større end" i min if-sætning?



Peter Makholm (20-11-2001)
Kommentar
Fra : Peter Makholm


Dato : 20-11-01 08:33

"jesper rønn" <jesperdrengen@my-deja.com> writes:

> Hvordan skriver jeg "større end" i min if-sætning?

Læs man bash og man test.

if [ `stat -t $FILE | awk {'print $12'}` -gt `stat -t $DIR | awk {'print $12'}` ] ; then
/bin/true
fi

--
Når folk spørger mig, om jeg er nørd, bliver jeg altid ilde til mode
og svarer lidt undskyldende: "Nej, jeg bruger RedHat".
-- Allan Olesen på dk.edb.system.unix

jesper rønn (21-11-2001)
Kommentar
Fra : jesper rønn


Dato : 21-11-01 00:11


"Peter Makholm" <peter@makholm.net> wrote in message
news:87r8qtyk15.fsf@xyzzy.adsl.dk...
> "jesper rønn" <jesperdrengen@my-deja.com> writes:
> > Hvordan skriver jeg "større end" i min if-sætning?
>
> if [ `stat -t $FILE | awk {'print $12'}` -gt `stat -t $DIR | awk {'print
$12'}` ] ; then

Det virker perfekt. Stor tak til hjælpen begge to.
Til interesserede er der her mit script, som vedligeholder PHP manual
dagligt på min maskine.

Hilsen
Jesper Rønn

=============script===============




































#!/bin/bash

# get recent manuals from web, and make local edition up-to-date
# $Id$

cd /var/www/html/ref

FILE=php_manual_en.tar.gz
DIR=phpmanual

statF=`stat -t $FILE | awk {'print $14'}`
statD=`stat -t $DIR | awk {'print $14'}`

# echo 'fil: ' $statF
# echo 'dir: ' $statD
wget --timestamping http://se.php.net/distributions/manual/$FILE

if [ $statF -gt $statD ] ; then
cd $DIR
tar xzf ../$FILE *
echo 'update OK! Manual files updated'
else
echo 'no files updated!'
fi

cd -




Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408905
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste