Tema: Re: ksh, wtf?
Autorius: Ernestas V.
Data: 2008-08-14 15:47:35
gali pabandyti `sh -c '$Z'`

-- 
Ernestas
"Fla" <klausk_ir_bus_atsakyta@arba.ne> wrote in message 
news:g81726$dfj$1@trimpas.omnitel.net...
> Na esme tame, kad man reikia pasiimti skirtingose scripto vietoje vykdomos 
> "ps -e ...." komandos rezultata..
> Ir todel noretusi visa ta "ps -e ..." skripte tureti uzrasyta tik 1 karta, 
> o ne 10 vienodu eiluciu:
>
> PID=`ps -e ....` cia (vietoj .... dar kokia 100 simboliu :)
>
> Pirma mintis savaime aisku buvo visa "ps -e ..." sudeti i kintamaji, ir 
> naudot PID=`$VAR`, bet panasu
> kad teks ieskoti kitu sprendimu.. o 'eval' rezultato i kintamaji kaip 
> suprantu negrazins :(
>
> O sitas scriptukas buvo tik kaip iliustracija kas neveikia - "command 
> substitution", kai komanda paduodama
> kaip kintamasis, ir jame yra "|" (nes nenaudojant kintamojo, arba 
> nenaudojant "|", viskas veikia)
>
> Laimis wrote:
>> Fla rašė:
>>> Kodel neveikia #2 ir #3, nors output ish #1 neiskraipytas (1:1)?
>>>
>>> ---------------------------------------(begin: z)
>>> #!/bin/ksh
>>>
>>> Z='ps -e | grep aa'
>>>
>>> clear
>>> echo '---------------'
>>> echo 'test #1:' `echo $Z`
>>> echo '---------------'
>>> echo 'test #2:' `$Z`
>>> echo '---------------'
>>> echo 'test #3:' $($Z)
>>> echo '---------------'
>>
>> Tai #1 atveju:
>> `echo $Z` -- išvedamas (echo) $Z kintamasis ir visa tai įvykdoma kaip 
>> komanda (``), o toliau jau šios komandos rezultatas sujungiamas su 
>> pirmuoju echo.
>>
>> #2 ir #3 atvejais (o ir apskritai) $Z kintamąjį reikėtų tiesmukiškai 
>> įvykdyti (eval); šiais atvejais veikia kintamojo reikšmės pakeitimas 
>> (substitution), tad '|' ir, turbūt, kt. (operatoriai) neapdorojami pačio 
>> shell'o, nes jie nėra (na, neskaitomi esantys) komandinėje eilutėje):
>>
>> eval $Z
>>