Strona 1 z 1

Wynik polecenia bash w perlu, system()?

: 21 lutego 2011, 03:06
autor: stoperekk
W jaki sposób mogę zapisać wynik polecenia:

Kod: Zaznacz cały

/sbin/ifconfig wlan0 | head -n 2 | tail -n 1 | egrep -o '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' | head -n 1
do zmiennej Coś w tym stylu, ale to nie działa

Kod: Zaznacz cały

my $x = system("/sbin/ifconfig wlan0 | head -n 2 | tail -n 1 | egrep -o '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' | head -n 1");

: 21 lutego 2011, 11:55
autor: mrc000
Od razu mówie, nie znam perla. Na wzór basha to zapis może wyglądać tak:

Kod: Zaznacz cały

my $x = `/sbin/ifconfig wlan0 | head -n 2 | tail -n 1 | egrep -o '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' | head -n 1`;

: 21 lutego 2011, 19:07
autor: lessmian2
Wystarczy przeczytać

Kod: Zaznacz cały

perldoc -f system
Funkcja system zwraca status wyjścia wywoływanego programu, exec nie zwraca nic, a to co Cię interesuje, czyli to co program wypisuje, to jak napisał mrc000 backticki - ``.

: 21 lutego 2011, 19:12
autor: stoperekk
Dziękuję, właśnie o to mi chodziło, złe nawiasy wstawiałem, ja jeszcze dodałem na końcu

Kod: Zaznacz cały

| tr -d '\n'
aby nie było znaku nowej linii.

Kod: Zaznacz cały

my $x = `/sbin/ifconfig wlan0 | head -n 2 | tail -n 1 | egrep -o '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' | head -n 1 | tr -d '\n'`;

: 21 lutego 2011, 19:26
autor: lessmian2
stoperekk pisze:aby nie było znaku nowej linii
Od tego jest chomp. Poza tym skoro już piszesz skrypt w perlu, używaj go zamiast uruchamiać 5 zewnętrznych programów ;)