/ 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
Quoting og command substitution
Fra : Michael Hjorth


Dato : 20-08-03 12:54

Hej gruppe

Jeg har et lille problem jeg ikke kan finde noget dokumentation på:

I ksh og flere andre shells kan man vælge mellem backquote syntax
`kommando` eller den nyere $(kommando) syntax til
kommandosubstitution. I ksh man-siden står at $( ... ) syntaxen er at
foretrække og at `...` syntaxen er forældet.

Jeg har opdaget at man får ændret enkelt-plinger ' til dobbelt-plinger
" hvis man bruger $( ... ) syntaxen:

peak3:/u/mh11epp> set -x
peak3:/u/mh11epp> cc=$(sqlplus -s xxx/xxx <<EOD
> select userenv('SESSIONID') from dual;
> EOD)
+ + sqlplus -s xxx/xxx
+ 0< /tmp/sh29957.12
cc=select userenv("SESSIONID") from dual
*
FEJL i linie 1:
ORA-02003: ugyldig USERENV-parameter
peak3:/u/mh11epp>

Og så får jeg en fejl da Oracle basen forventer strenge i
enkelt-plinger.
Hvis jeg bruger backquotes så virker det fint:

peak3:/u/mh11epp> cc=`sqlplus -s xxx/xxx <<EOD
> select userenv('SESSIONID') from dual;
> EOD`
+ + sqlplus -s xxx/xxx
+ 0< /tmp/sh29957.18
cc=
USERENV('SESSIONID')
--------------------
23232
peak3:/u/mh11epp>

Jeg kan ikke finde noget dokumentation om det nogen steder, så er der
nogen er jer kloge hoveder som kan hjælpe??
Eksemplet er kørt med ksh på Solaris 8 (Intel varianten) hvis det har
nogen betydning.

mvh
Michael.

 
 
Jacob Sparre Anderse~ (21-08-2003)
Kommentar
Fra : Jacob Sparre Anderse~


Dato : 21-08-03 15:00

Michael Hjorth wrote:

> I ksh og flere andre shells kan man vælge mellem backquote syntax
> `kommando` eller den nyere $(kommando) syntax til
> kommandosubstitution.

Jep.

> I ksh man-siden står at $( ... ) syntaxen er at
> foretrække og at `...` syntaxen er forældet.

Det undrer mig en del. For i

http://www.opengroup.org/onlinepubs/007908799/xcu/chap2.html#tag_001

(der gerne skulle være den officielle POSIX-specifikation) kan jeg ikke
se noget om at den ene syntaks er foretrukket frem for den anden.

Jacob
--
"Altså hør nu, jeg ved snart ikke... Jeg var ikke så vild
med sidste gang på Jorden... Korset, sømmene, tornene og
alt det der..." -- Sønnen (ifgl. Mézières & Christin)


Michael Hjorth (21-08-2003)
Kommentar
Fra : Michael Hjorth


Dato : 21-08-03 21:46

On Thu, 21 Aug 2003 14:59:58 +0100, Jacob Sparre Andersen wrote:

> Michael Hjorth wrote:
>

> > I ksh man-siden står at $( ... ) syntaxen er at
>> foretrække og at `...` syntaxen er forældet.
>
> Det undrer mig en del. For i
>
> http://www.opengroup.org/onlinepubs/007908799/xcu/chap2.html#tag_001
>
> (der gerne skulle være den officielle POSIX-specifikation) kan jeg ikke
> se noget om at den ene syntaks er foretrukket frem for den anden.
>
OK, jeg overtolker måske denne sætning fra man siden:

Because of these inconsistent behaviors, the backquoted
variety of command substitution is not recommended for new
applications that nest command substitutions or attempt to
embed complex scripts.

Jeg laver da også bare mit script med backquotes, men jeg forstår bare
stadig ikke hvorfor shellen laver ' om til "

Michael


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

Månedens bedste
Årets bedste
Sidste års bedste