/ 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
Sætte en env variabel fra et SH script??
Fra : Morten Trab


Dato : 14-02-04 15:18

Er det muligt at sætte en env variabel fra et SH script??

/usr/bin/env ser ikke ud til at vil gøre det korrekt, da programmet der skal
afvikles fra scriptet stadig brokker sig over at den mangler variablen...

Sådan her ser det ud nu:

#!/bin/sh

X_SENDER="$1"
X_RECIPIENT="$2"
X_TMDAUSER="$3"

cat | /usr/bin/formail -A "X-TMDA-Original-To: $X_RECIPIENT" | /usr/bin/env
SENDER=$X_SENDER RECIPIENT=$X_RECIPIENT TMDAUSER=$X_TMDAUSER
/usr/bin/tmda-filter -c /etc/tmdarc

Men tmda-filter brokker sig over at RECIPIENT ikke er sat :S

--

Mvh,/Best regards,
Morten Trab
Web: http://www.blackchart.dk

Ved direkte mail, fjern da REMOVE fra adressen.



 
 
FePe (14-02-2004)
Kommentar
Fra : FePe


Dato : 14-02-04 16:10

Morten Trab wrote:

> Er det muligt at sætte en env variabel fra et SH script??
>
> /usr/bin/env ser ikke ud til at vil gøre det korrekt, da programmet der skal
> afvikles fra scriptet stadig brokker sig over at den mangler variablen...
>
> Sådan her ser det ud nu:
>
> #!/bin/sh
>
> X_SENDER="$1"
> X_RECIPIENT="$2"
> X_TMDAUSER="$3"
>
> cat | /usr/bin/formail -A "X-TMDA-Original-To: $X_RECIPIENT" | /usr/bin/env
> SENDER=$X_SENDER RECIPIENT=$X_RECIPIENT TMDAUSER=$X_TMDAUSER
> /usr/bin/tmda-filter -c /etc/tmdarc
>
> Men tmda-filter brokker sig over at RECIPIENT ikke er sat :S

Så vidt jeg ved, så er det nødvendigt at eksportere variablerne med `export':

export SENDER=$X_SENDER;

Men jeg har aldrig brugt env, så måske tager jeg fejl. Fejlen kunne også ligge
i, at du bruger env i en pipe. Ud fra eksemplet kan jeg ikke se noget galt ved
at gøre det på følgende måde.

#!/bin/sh

X_SENDER="$1"
X_RECIPIENT="$2"
X_TMDAUSER="$3"

/usr/bin/env SENDER=$X_SENDER; # og det samme med de andre

cat | /usr/bin/formail -A "X-TMDA-Original-To: $X_RECIPIENT" |
/usr/bin/tmda-filter -c /etc/tmdarc

Måske har jeg ikke forstået eksemplet helt. Men burde der ikke være en '|' efter
"TMDAUSER=$X_TMDAUSER"?

Mvh. FePe.
--
Theorem: a cat has nine tails.
Proof:
No cat has eight tails. A cat has one tail more than no cat.
Therefore, a cat has nine tails.



Morten Trab (14-02-2004)
Kommentar
Fra : Morten Trab


Dato : 14-02-04 17:57

"FePe" <fepe@tiscali.dk> skrev i en meddelelse
news:402E3A41.88646943@tiscali.dk...

> Så vidt jeg ved, så er det nødvendigt at eksportere variablerne med
`export':
>
> export SENDER=$X_SENDER;

Vil jeg da lige prøve...

> Men jeg har aldrig brugt env, så måske tager jeg fejl. Fejlen kunne også
ligge
> i, at du bruger env i en pipe. Ud fra eksemplet kan jeg ikke se noget galt
ved
> at gøre det på følgende måde.
>
> #!/bin/sh
>
> X_SENDER="$1"
> X_RECIPIENT="$2"
> X_TMDAUSER="$3"
>
> /usr/bin/env SENDER=$X_SENDER; # og det samme med de andre
>
> cat | /usr/bin/formail -A "X-TMDA-Original-To: $X_RECIPIENT" |
> /usr/bin/tmda-filter -c /etc/tmdarc

Når du bruger env i en shell skal den være sammen med den kommando der skal
bruge variablerne da de varibler der sættes med env bliver slettet når
kommandoen er udført...

> Måske har jeg ikke forstået eksemplet helt. Men burde der ikke være en '|'
efter
> "TMDAUSER=$X_TMDAUSER"?

Nej :)

Men jeg prøver lige om man kan eksportere dem, som du foreskrev...


--

Mvh,/Best regards,
Morten Trab
Web: http://www.blackchart.dk

Ved direkte mail, fjern da REMOVE fra adressen.



Morten Trab (15-02-2004)
Kommentar
Fra : Morten Trab


Dato : 15-02-04 00:05

"FePe" <fepe@tiscali.dk> skrev i en meddelelse
news:402E3A41.88646943@tiscali.dk...

> export SENDER=$X_SENDER;

Det ser ud til at virke, takker :)


--

Mvh,/Best regards,
Morten Trab
Web: http://www.blackchart.dk

Ved direkte mail, fjern da REMOVE fra adressen.



Niels Baggesen (16-02-2004)
Kommentar
Fra : Niels Baggesen


Dato : 16-02-04 07:08

FePe <fepe@tiscali.dk> wrote:
> Morten Trab wrote:
> > Sådan her ser det ud nu:
> >
> > #!/bin/sh
> >
> > X_SENDER="$1"

> Så vidt jeg ved, så er det nødvendigt at eksportere variablerne med `export':

> export SENDER=$X_SENDER;

Det virker ikke når det er sh. Den syntax er kun for ksh/bash. I sh
skal det være

SENDER=$X_SENDER
export SENDER

/Niels

--
Niels Baggesen -- @home -- Århus -- Denmark -- niels@baggesen.net
The purpose of computing is insight, not numbers -- R W Hamming

Peter Dalgaard (14-02-2004)
Kommentar
Fra : Peter Dalgaard


Dato : 14-02-04 20:07

"Morten Trab" <mortenREMOVE@trab.dk> writes:

> Er det muligt at sætte en env variabel fra et SH script??
>
> /usr/bin/env ser ikke ud til at vil gøre det korrekt, da programmet der skal
> afvikles fra scriptet stadig brokker sig over at den mangler variablen...
>
> Sådan her ser det ud nu:
>
> #!/bin/sh
>
> X_SENDER="$1"
> X_RECIPIENT="$2"
> X_TMDAUSER="$3"
>
> cat | /usr/bin/formail -A "X-TMDA-Original-To: $X_RECIPIENT" | /usr/bin/env
> SENDER=$X_SENDER RECIPIENT=$X_RECIPIENT TMDAUSER=$X_TMDAUSER
> /usr/bin/tmda-filter -c /etc/tmdarc
>
> Men tmda-filter brokker sig over at RECIPIENT ikke er sat :S

Just checking: I virkeligheden har du ikke linjeskift foran
/usr/bin/tmda-filter, vel? I øvrigt har jeg en mistanke om at env slet
ikke er nødvendig, man plejer bare at kunne skrive

VAR1=val1 VAR2=val2 command arg1 arg2

altså fx.

blueberry/>A=1 B=2 env
A=1
B=2
MANPATH=:/usr/share/man
....osv...
_=/bin/env

blueberry/>env A=1 B=2 env
MANPATH=:/usr/share/man
....osv...
_=/bin/env
A=1
B=2

Hvorfor rækkefølgen bliver forskellig går over min forstand...

--
O__ ---- Peter Dalgaard Blegdamsvej 3
c/ /'_ --- Dept. of Biostatistics 2200 Cph. N
(*) \(*) -- University of Copenhagen Denmark Ph: (+45) 35327918
~~~~~~~~~~ - (p.dalgaard@biostat.ku.dk) FAX: (+45) 35327907

Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408849
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste