← Back to team overview

sslug-teknik team mailing list archive

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