Vylistovani podrizenych interface

Dan Lukes dan at obluda.cz
Fri Nov 23 12:14:34 CET 2012


On 11/23/12 10:54, Ivo Hazmuk:
>> for i in $( ifconfig -l ) ; do
...
>>    [ -z "$pi" ] || echo "$i -> $pi" ;

> to je moc pekne. Ja bych to napsal ponekud sloziteji.

> A=`ifconfig -l`
> for i in $A
...
>      if [ -n "$PI" ]


Nemam rad zpetne apostrofy - prilis snadno se zameni za neco jineho.

Ale ten druhej konstrukt (podminka bez if) je proste lenost a pozor, je 
trochu rizikova. V tomhle pripade pouzit sel, protoze co se v podmince 
dela je jednoduche, ale v jinych pripadech je to rizikovy konstrukt. 
Nektere implementace shellu (i ty na starsich verzich FreeBSD) totiz v 
pripade, ze se v takto podminenem zretezenem prikazu objevi interni 
prikaz nebo syntakticky konstrukt spousteji takovy prikaz v subshellu.

Takze treba prikaz:

A=Y ; true && A=X ; echo $A

nemusi nutne vzdy ve vsech shellech vypsat 'X', nekdy vypise 'Y' 
(protoze prirazeni do promenne je interni konstrukt a pokud ho konkretni 
implemetace shellu zinterpretuej v subshellu tak nastaveni promennych v 
nem se navenek neprojevi) ...

To ja jen aby nekdo si nekdo s "libivym zapisem podmineneho prikazu" 
nenabehnul. Treba na starsich verzich FreeBSD (v dnesnich se uz 
implementace sh i bash chova tak jak clovek intuitivne ceka) nebo na 
nejakem jinem OS.


Jo a jeste - ani jednomu nam to nefunguje pokud by ve jmenu sitoveho 
interface byla mezera nebo dvojtecka (a nez mi nekdo reknete, ze tam 
nikdy nejsou, tak si zkuste udelat
ifconfig lo3 create name "X 2"

A uplnejm hracickum pak doporucuji prikaz:

ifconfig lo5 create name "X^HY"

Pricemz to '^H' se pise tak, ze nejprve stisknete CTRL-V, pak ho pustite 
a stisknete a pustite klavesu backspace.

S takto vytvorenym interfacem pak preji prijemnou zabavu (nemusite se 
bat, system vam to neshodi).

Dan



More information about the Users-l mailing list