sslug-teknik team mailing list archive
-
sslug-teknik team
-
Mailing list archive
-
Message #04072
RE: RE: Programmering af scripts
Jeg takker mange gang, det er lige hvad jeg har brug for. :-)
Servicepack SR12 for NT. Available at www.linux.org
Med venlig hilsen / Regards
Allan Madsen
Systemadministrator
Dator A/S Tel. +45 96 53 10 00
Stadionvej 2A Fax +45 96 53 10 10
DK-9560 Hadsund e-mail alm@xxxxxxxx
Denmark
-----Original Message-----
From: Peter Stubbe [mailto:Ps@xxxxxxxxxx]
Sent: Thursday, March 11, 1999 9:56 AM
To: 'sslug-teknik@xxxxxxxx'
Subject: [TEKNIK] RE: Programmering af scripts
> Jer er ved at proeve at lave et script der kan laese, hvor et
bibliotek
> er plaseret (kikker efter det i en fil) for dernaest
> at springe til biblioteket, laese en fil, hvorfra den saetter nogle
env.
> variabler.
>
>
> Noget i stil med
>
>
> programmet kaldes med: pro mp
>
> Programmet skal saa kikke i en fil (pro.info) som ligger samme sted
som
> programmet / scriptet., og som er opbygget paa foelgende maade.
>
> mp=/projekter/mp
> m1=/projekter/m1
> m2=/projekter/m2
> m3=/projekter/m3
>
> I denne fil finder programmet udaf at mp ligger i /projekter/mp
>
> Programmet skal saa hoppe / gaa til dette bibliotek
> laese filen pro.info som er opbygget som den anden info fil.
> saette de variabler som der stara i denne fil.
>
> Dernaest skal programmet exit og staa i det bibliotek som den fandt i
> den foerste pro.info fil..
Hvis du cd'er i et script, vil det ikke have nogen effekt i den
kaldende shell, da der er tale om to forskellige processer.
Det samme gælder for alle variable du måtte definere.
Du kan imidlertid source dit script ved at skrive
. scriptnavn
Punktummet er vigtigt, da det får bash til at læse filen som hvis
du havde siddet og indtastet kommandoerne direkte. Hvis du ikke
kan lide det må du lave et alias.
Hvis du vil kigge i fx pro.info, når du skriver pro, vil det hedde
$1.info i scriptet.
Din anden parameter kan findes vha sed.
sed -n "s/$2=\/?/.\//p" <$1.info
vil lede i $1.info efter linier hvor din anden parameter står, fulgt
af et = og evt et /. Parametren og = ændres til . og linien udprintes.
Dvs mp=/projekter/mp ændres til ./projekter/mp og det er lige hvad der
skal cd'es til. Deraf fås den første linie til:
cd `sed -n "s/$2=\/?/.\//p" <$1.info`
Da den anden fil er opbygget som linier af formen
var=værdi
kan den sources direkte. Dvs den anden linie bliver:
. $1.info
Dette definerer dem imidlertid kun lokalt. Hvis du fra din shell starter
en anden shell, vil den ikke kende til dem. Hvis den skulle det må du
exportere dem. Som du kan gøre med:
export `sed "s/=.*/ /" <$1.info`
der snupper variabelnavnet fra hver linie i filen, og giver den samlede
liste til export.
Alt i alt giver det altså:
cd `sed -n "s/$2\/?/.\//p" <$1.info`
. $1.info
export `sed "s/=.*/ /" <$1.info`
Håber det kan bruges.
mvh
Peter Stubbe