Hulp gevraagd: bin/sh scripting op dreambox

eendenteam

Addicted Member
Administrator
Moderator
Lid sinds
1 feb 2004
Berichten
6.246
Waarderingsscore
41
Punten
48
Leeftijd
121
We hebben een vraag m.b.t. bin/sh scripting op een dreambox.
We weten dat busybox beperkt is en bijvoorbeeld (helaas) geen arrays kent.
We hebben verschillende variabelen voorzien van een volgnummer, maar weten niet hoe deze op te roepen (zie een voorbeeld onder)

IP1=192.168.1.1
IP2=192.168.1.2
IP3=192.168.1.3
Code:
i=1
while [ $i -le 3 ]
do
  echo $(IP{$i})
  i=`expr $i + 1`
done

Het gaat dus om via de regel met "echo $(IP{$i})" de 3 verschillende ip's te zien.
Met andere woorden hoe roepen we de variabelen IP1, IP2 en IP3 op, door gebruik te maken van $i.
Let wel: in ons script hebben we veel meer dan 3 IP's; we hebben hier alleen als voorbeeld dit beperkt tot 3.
Wie weet raad?
 
Probeer eens:

echo $*(IP${i})

http://www.ooblick.com/text/sh/
${VAR}

The latter syntax is useful if the variable name is immediately followed by other text:

#!/bin/sh
COLOR=yellow

echo This looks $COLORish
echo This seems ${COLOR}ish
 
prlwytzkofski;218550 zei:
Probeer eens:
echo $*(IP${i})
Werkt helaas niet. We krijgen dan deze melding: syntax error: unexpected "(" (expecting "done"). We hebben ook al andere varianten geprobeerd maar nog niet de juiste syntaxis gevonden helaas.
 
Nog tig keer proberen en proberen zijn we er eindelijk uit; nou ja uit.... Er is een alternatief waar we iets mee kunnen alleen nog steeds niet het aanroepen van IP1, IP2 enz.

IPS="192.168.1.1 192.168.1.2 192.168.1.3"

i=1
for IP in $IPS; do
echo $IP
i=`expr $i + 1`
done
 
Okay laten we eens kijken wat we kunnen doen.

i=1
while [ $i -le 3 ]
do
echo $(IP{$i})
i=`expr $i + 1`
done

Werkt dus niet, de echo klopt wel maar niet het argument.
Wat het zou moeten zijn is als volgt.

i=1
IP="192.168.1."
while [ $i -le 255 ]
do
IP="$IP + $i"
echo $IP
i= $i + 1
done

Ik wil hiermee zeggen dat het IP nummer bestaat uit 192.168.1. en daar moeten i tegen aan plakken.
volgens mij zou het zo kunnen werken.

Anders kijk eens hier http://www.joedog.org/index/articles-cheat-sheet
 
@bert50 bedankt voor het meedenken maar helaas werkt het niet. Let wel het is bin/sh op de dreambox dus afhankelijk v.d. busybox. Met jouw voorbeeld krijgen we als output:

192.168.1.+1
192.168.1.+1+2
192.168.1.+1+2+3
enz.

Overigens hebben we als voorbeeld inderdaad 192.168.1.1 t/m 192.168.1.3 genomen maar er had net zo goed een 10.0.0.1 tussen kunnen zitten en dan gaat jouw voorbeeld niet op. Er moet dus een ander echo argument zijn om IP1, IP2, IP3 e.d. te tonen in een loop.
 
Maar toch bedankt @bert50 voor de link die je gaf want daar stond iets dat ons op bepaalde gedachten bracht, nl. het escapen. En zie daar tezamen met een evaluate werkt het eindelijk zoals we hoopten:

Code:
#!/bin/sh

IP1=192.168.1.1
IP2=192.168.1.2
IP3=192.168.1.3

for i in $(seq 1 3)
do 
   eval echo \$IP${i}
done
 
Ben blij dat ik je in de goede richting heb kunnen helpen.

Maar ja jij moet mij een beetje kennen, om alleen een grote hoeveelheid var's met IP nummers te vullen en deze te laten printen, lijkt mij het programma overbodig.
Mij vraag is dus, wat ga je er mee doen???
 
Verschillende data van diverse dreamboxen op ons scherm laten printen
 



Hosting Fun

Advertenties

Terug
Bovenaan Onderaan