Permalänk
Medlem

script fråga

Har lite problem med att skapa ett skript.

Det jag skulle vilja göra är att se om en fil blivit uppdaterat och om den har det så ska den fortsätta och om inte så ska scriptet avslutas.

Hur gör jag detta enklast i ett shell-script?

Permalänk
Medlem

Jag ser två olika sätt som du skulle kunna göra det på, antingen genom att kolla mtime, `stat -c%Y $FILEN`, eller i slutet av skriptet göra en kopia av filen, för att sedan typ:
if [ `diff $FILEN $KOPIAN | wc -l` = 0];then avsluta skriptet; fi

Permalänk
Medlem

personligen kör jag med en hash för filen som jag vill hålla koll på, har detta lagt i en smidig fil som jag kan sourca in i script om jag behöver den för att jag använder det så pass mycket men i korthet:

#!/bin/sh LOCAL_HASH="~/.hash" HASH=`/sbin/md5 -q $FILE` OLD_HASH=`cat $LOCAL_HASH` if [ "x$HASH" = "x$OLD_HASH" ]; then exit 0 else echo "wooho, file change" echo $HASH > $LOCAL_HASH fi

klippte ut detta ur det script som jag har och är för lat för att kolla att jag inte missat ngt tecken eller så, men det ger ju en bild om hur det är tänkt..

Visa signatur

"Stallman to Dvorak: Welcome to freedom, your rulebook is in the mail" - Fake Steve Jobs
rfc-1925 - The Twelve Networking Truths

Permalänk
Medlem

ntity: riktigt snygg lösning!

Visa signatur

1. AMD Athlon XP 2600+@2227 | GT Silent Breeze | ASUS A7N8X | 1536MB TM PC3200 | Radeon X800XL | Raid 0 500Gb + 380Gb HD
2. AMD AthlonXP 2100+@2403 | Spire Falconrock II | Abit NF7 v1.2 | 512Mb TM PC2700 | Maxtor 80Gb | Radeon 9500

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av ntity

if [ "x$HASH" = "x$OLD_HASH" ]; then

Vad gör x:en framför variablerna?

Visa signatur

01001000 01100001 01110010 00100000 01100100 01110101 00100000 01110100 01110010 10000110 01101011 01101001 01100111 01110100 00111111 00100000 00111010 00101001

Permalänk
Medlem

x före variablerna hindrar ett vanligt fel i sh script, en jämförelse så som:

= sometext

är ett fel som kommer att stoppa scriptet med "[: =: unexpected operator", medans med x blir jämförelsen:

x = xsometext

vilket är ett fullt fungerande logiskt uttryck, och false precis som tänkt.

PS. anledningen jag använder hash är för att det passar mot allt, en url, en textfil eller en binär osv..

Visa signatur

"Stallman to Dvorak: Welcome to freedom, your rulebook is in the mail" - Fake Steve Jobs
rfc-1925 - The Twelve Networking Truths