[LUGOS] bash - set -e

Egon Kocjan egon at krul.ath.cx
Fri Jul 6 02:58:06 CEST 2007


Hm, sem še malo razmišljal, pa sem zgruntal dokaj splošno rešitev:

set -e
pid=$$
(rm /kjkjdfkj || kill $pid) | cat

lp
egon


Blaz Podrzaj wrote:
> Aha, v bistvu tebe muci tale -e (sem spregledal). Naceloma tale 'rm x' je
> naceloma "Simple Command" ampak ta bi se morala koncati s control 
> operatorjem.
> Tvoja se ne, ker se nadaljuje v pipo in to ni vec "Simple Command" 
> ampak je ze
> "Pipeline" in tukaj ti -e nic ne pomaga. Ce bi delal redirekcijo v 
> file cemir
> bi se ti rad izognil bi -e funkcioniral ker se redirekcija smatra kot del
> "Simple Command".
>
> Torej preostane ti tole spodaj -e pa ti v tem konkretnem primeru ne 
> koristi.
>
> lp,B
>
> Quoting Blaz Podrzaj <b at thz.net>:
>
>> Hoj,
>>
>> V tvojem drugem primeru teoreticno nic ni crknilo... ti si nekaj 
>> naredil in
>> STDOUT  tega kar si naredil stocil v cat. Dela! Prvi del pipe ni 
>> vrgel nic na
>> STDOUT, drugi del je pa ta nic cisto lepo pozrl in izpljunil dalje 
>> kar je OK.
>>
>> Rabis kvecjemu en pogoj v prvem delu ter 'exit 1' iz skripte.
>>
>> Tole bi bila "agli" resitev tocno za tvoj primer:
>>
>> ([ -f "xx" ]&&rm xx|cat||exit 1)||echo x
>>
>> ...vse kar je v oklepajih predstavlja tvojo skripto.
>>
>> lp,B
>>
>> Quoting Egon Kocjan <egon at krul.ath.cx>:
>>
>>> ?ivjo
>>>
>>> Recimo imam dve skripti:
>>>
>>> set -e
>>> rm /kjkjdfkj
>>>
>>> $ sh x.sh || echo x
>>> rm: cannot remove `/kjkjdfkj': No such file or directory
>>> x
>>> $
>>>
>>> To je ok primer.
>>>
>>>
>>> Zdaj pa bolj zanimiv primer:
>>>
>>> set -e
>>> rm /kjkjdfkj | cat
>>>
>>> $ sh x.sh || echo x
>>> rm: cannot remove `/kjkjdfkj': No such file or directory
>>> $
>>>
>>> Kako bi naredil, da bi celotna zadeva crknila, kljub temu da je samo en
>>> del pipe izraza crknil. Rad bi se izognil pisanju v fajle, itd., torej
>>> nekaj elegantnega. Pipe izrazi naj bi bili poljubno dolgi (ve?krat |)
>>>
>>> Lp
>>> egon
>>>
>>> _______________________________________________
>>> lugos-list mailing list
>>> lugos-list at lugos.si
>>> http://liste2.lugos.si/cgi-bin/mailman/listinfo/lugos-list
>>>
>>>
>>
>>
>> _______________________________________________
>> lugos-list mailing list
>> lugos-list at lugos.si
>> http://liste2.lugos.si/cgi-bin/mailman/listinfo/lugos-list
>>
>>
>
>
> _______________________________________________
> lugos-list mailing list
> lugos-list at lugos.si
> http://liste2.lugos.si/cgi-bin/mailman/listinfo/lugos-list



More information about the lugos-list mailing list