Wynik polecenia bash w perlu, system()?

Potrzebujesz pomocy z C, C++, perl, python, itp.
stoperekk
Posty: 27
Rejestracja: 06 marca 2009, 16:44

Wynik polecenia bash w perlu, system()?

Post 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");
mrc000
Posty: 15
Rejestracja: 02 marca 2010, 23:21
Lokalizacja: /home

Post 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`;
Awatar użytkownika
lessmian2
Member
Posty: 1088
Rejestracja: 30 kwietnia 2008, 19:38
Lokalizacja: Kraków

Post 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 - ``.
stoperekk
Posty: 27
Rejestracja: 06 marca 2009, 16:44

Post 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'`;
Awatar użytkownika
lessmian2
Member
Posty: 1088
Rejestracja: 30 kwietnia 2008, 19:38
Lokalizacja: Kraków

Post 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 ;)
ODPOWIEDZ