Dies ist eine mobil optimierte Seite, die schnell lädt. Wenn Sie die Seite ohne Optimierung laden möchten, dann klicken Sie auf diesen Text.

shell script problem mit array: Aus gegebenen Anlass wollte ich einen Script schreiben der die SNR v

    Nobody is reading this thread right now.

markvienna

Hacker
Registriert
12. April 2014
Beiträge
401
Reaktionspunkte
124
Punkte
103
Hallo

Aus gegebenen Anlass wollte ich einen Script schreiben der die SNR von meinen Sendern in meinem Favoriten Bouquet misst.

Leider scheitere ich am Array - unter Debian laufen sie aber nicht auf der VU Duo VTI neueste version

Bitte um Hilfe

Code:
#!/bin/bash

array="1:0:19:132F:3EF:1:C00000:0:0:0:
1:0:19:4331:300C:13E:820000:0:0:0:
1:0:19:283D:3FB:1:C00000:0:0:0:
"
for i in ${array[*]}
do
wget -O - -q http://127.0.0.1//web/zap?$i
sleep 20
wget -O - -q http://127.0.0.1/web/getcurrent | grep "\(<\|</\)e2servicename" | tr -d '\n' | sed "s/.*<e2servicename>\(.*\)<\/e2servicename.*/\\1\n/" >> signal.txt
wget -O - -q http://127.0.0.1/web/signal?AGC= | grep "\(<\|</\)e2snr" | tr -d '\n' | sed "s/.*<e2snr>\(.*\)<\/e2snr.*/\\1\n/" >> signal.txt
wget -O - -q http://127.0.0.1/web/signal?AGC= | grep "\(<\|</\)e2acg" | tr -d '\n' | sed "s/.*<e2acg>\(.*\)<\/e2acg.*/\\1\n/" >> signal.txt
done
exit

Fehler
oot@vuduo2:~# ./check.sh

./check.sh: line 7: syntax error: bad substitution

Alternativ habe ich es so probiert:

Code:
#!/bin/sh

array=( 1:0:19:132F:3EF:1:C00000:0:0:0: 1:0:19:4331:300C:13E:820000:0:0:0: 1:0:19:283D:3FB:1:C00000:0:0:0: )
for i in "${array[@]}"
do
wget -O - -q http://127.0.0.1//web/zap?$i
sleep 20
wget -O - -q http://127.0.0.1/web/getcurrent | grep "\(<\|</\)e2servicename" | tr -d '\n' | sed "s/.*<e2servicename>\(.*\)<\/e2servicename.*/\\1\n/" >> signal.txt
wget -O - -q http://127.0.0.1/web/signal?AGC= | grep "\(<\|</\)e2snr" | tr -d '\n' | sed "s/.*<e2snr>\(.*\)<\/e2snr.*/\\1\n/" >> signal.txt
wget -O - -q http://127.0.0.1/web/signal?AGC= | grep "\(<\|</\)e2acg" | tr -d '\n' | sed "s/.*<e2acg>\(.*\)<\/e2acg.*/\\1\n/" >> signal.txt
done
exit

nachher wollte ich die liste so laden

Code:
root@vuduo2:~# cat serc.sh

#!/bin/bash


# Parse speed  values between tag and write output to temporary file

  awk '/<e2service>/,/<\/e2service>/{if(/<e2servicereference|<e2servicereference/){gsub(/.*="|"\/>/,x);print}}' service.xml >service.tmp


# Create array

#  arr=( $( < service.tmp  ) )


# OR you can use cut command for specific column into an Array instead of entire line may be useful in future

 arr=( $( < <(cut -f1 service.tmp )  ) )


# delete temporary file created using awk

#  rm -f service.tmp


# Print Array Elements

  for i in $(seq 0 $((${#arr[@]} - 1)))

  do

    echo ${arr[$i]}

  done

Ausgeführt reisst es diesen error

root@vuduo2:~# ./serc.sh

./serc.sh: line 10: syntax error: unexpected "("


die service.xml habe ich per API geladen.



ich bin ratlos - irgendwas ist anders auf der box als auf einem normalen linux server.
 
Zuletzt bearbeitet von einem Moderator:
Für die Nutzung dieser Website sind Cookies erforderlich. Du musst diese akzeptieren, um die Website weiter nutzen zu können. Erfahre mehr…