Nowe posty

Autor Wątek: bash na Openwrt  (Przeczytany 4645 razy)

politech

  • Gość
bash na Openwrt
« dnia: 2011-06-10, 10:48:45 »
hej,
kiedy uruchamiam skrypt :
#!/bin/bash
a=0;b=0;x=0
while read line;do
  [ "`echo $line | grep ESSID`" ] && essid[$a]=`echo "$line" | cut -d : -f 2 |  grep -o '[a-z,A-Z,0-9]*'` && ((a++))
  [ "`echo $line | grep Address`" ] && address[$b]=`echo "$line" | awk '{print $5}'` && ((b++))
done < <(iwlist scan 2>/dev/null )
while [ $x -lt ${#essid[@]} ];do
  echo ${essid[$x]} --- ${address[$x]}
  (( x++ ))
done
na maszynie z OpenWRT wywala mi ze błędy redirect w lini 6... Nie za bardzo wiem o co chodzi

Offline Paweł Kraszewski

  • Administrator
  • Guru
  • *****
  • Wiadomości: 3066
  • Lenistwo jest matką potrzeby = babcią wynalazku
    • Zobacz profil
bash na Openwrt
« Odpowiedź #1 dnia: 2011-06-10, 11:39:29 »
1. "<" pobiera dane z pliku. Koniec, kropka.
2. Jeżeli chcesz przesłać dane z programu używasz "|".

Czyli jak już, to:
[...]
$(iwlist scan 2>/dev/null ) | while read line;do
[...]
done
[...]
Paweł Kraszewski
~Arch/Void/Gentoo/FreeBSD/OpenBSD/Specjalizowane customy

politech

  • Gość
bash na Openwrt
« Odpowiedź #2 dnia: 2011-06-10, 12:50:16 »
#!/bin/sh
wlist scan > /tmp/scan.txt 2>/dev/null
a=0;b=0;x=0
$(iwlist scan 2>/dev/null ) | while read line;do
  [ "`echo $line | grep ESSID`" ] && essid[$a]=`echo "$line" | cut -d : -f 2 |  grep -o '[a-z,A-Z,0-9]*'` && ((a++))
  [ "`echo $line | grep Address`" ] && address[$b]=`echo "$line" | awk '{print $5}'` && ((b++))

$(iwlist scan 2>/dev/null ) | while read line;do
while [ $x -lt ${#essid[@]} ];do
  echo ${essid[$x]} --- ${address[$x]}
  (( x++ ))
done
echo ${essid[$x]} --- ${address[$x]} error :bad substitution

Offline vanhelzing

  • Users
  • Prawie jak Guru
  • ****
  • Wiadomości: 314
    • Zobacz profil
bash na Openwrt
« Odpowiedź #3 dnia: 2011-06-10, 15:28:11 »
Z tego, co się orientuję, to OpenWRT korzysta z sh. Konstrukcja $(...) jest zaimplementowana w bashu, a nie w sh. Zamień interpreter z /bin/sh na /bin/bash, albo nie wykorzystuj poleceń z basha (np zamień $(...) na `...`) i nie mieszaj poleceń z obu powłok.

politech

  • Gość
bash na Openwrt
« Odpowiedź #4 dnia: 2011-06-13, 08:34:05 »
hmm... dopiero raczkuje z basha i nie za bardzo odróżniam polecenia bash-sh, jesli ktoś mógłby mi napisać, które elementy msuze zmienic dokładnie, żeby skrypt byłczysto sh byłbym wdzięczny