PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : kleines problem mit shell-script



senfmensch
11-06-2003, 20:48
huhu :)
also ich komm einfach nit weiter mit meinem script. Xdialog macht mir zu schaffen :(
wenn ich von Xdialog eine menubox benutzen will muss ich Xdialog so starten:
Xdialog --menubox "text" "tag1" "item1" "tag2" "item2" .......
und hier mein script:
#!/bin/sh
qstat="/usr/games/quakestat"
servadr1="217.160.168.36:27961"
servadr2="62.93.201.9:27000"
servadr3="62.93.201.123:27000"
servadr4="193.17.17.68:27966"
servadr5="193.17.17.68:27964"
servadr6="193.17.17.68:27962"
servadr7="193.17.17.68:27960"

servzahl=`echo ${!servadr*} | wc -w`
declare -i i=0
p=$(($servzahl-1))
while [ $i -le $p ]; do
i=i+1
eval serw="\$servadr$i"

fak=`$qstat -q3s $serw | grep $serw`
eval \fak$i='$fak'
eval \bah$i="\-s$i"
echo "\"\$bah$i\" \"\$fak$i\" " >>/tmp/fak.tmp


done
klar=`cat /tmp/fak.tmp`
Xdialog --title "kermet" \
--menubox "Choose the server to connect:" 20 120 0 \
"-df" "startet DeFraG" \
$klar
2> /tmp/q3menu.tmp
case $retval in
0)
if [ $para == ${para:-s?} ] ; then
eval server="\$servadr${para##-s}"
startserv1
fi
rm -rf /tmp/q3menu.tmp
rm /tmp/fak.tmp;;
1)
echo "Abgebrochen."
rm -rf /tmp/q3menu.tmp /tmp/fak.tmp;;
255)
echo "Abgebrochen." ;rm -rf /tmp/q3menu.tmp /tmp/fak.tmp;;
esacwenn ich das script starte, sieht das so (http://home.arcor.de/cornusflakus/temp/Xdialog.jpg) aus. wie schaff ich is bei Xdialog statt den namen der variablen die werte der variablen hinzukriegen? hoffe mir kann jemand helfen ;)
gruss
senfmensch

senfmensch
12-06-2003, 08:10
hmm gibt es denn sowas wie >> auch fuer variablen? vllt gehts ja damit ;)

anda_skoa
12-06-2003, 09:32
Wenn du etwas direkt in eine Variable auswerten willst, kannst du das so machen



VAR=$(befehl)


also zb


TEXT=$(echo huhu)


Ciao,
_

senfmensch
12-06-2003, 09:43
also wenn ich echo huhu >> file 2x mach dann stehen 2 zeilen in der file. und _das_ wuerd ich gern fuer ne variable haben ;) aber ich hab eigentlich mein script schon aufgegeben. ich kriegs einfach net hin, daß "$bah1" "$fak1" "$bah2" "$fak2" ....... "$bahx-1" "$fakx-1" "$bahx" "$fakx" bei dem Xdialog stehen (x teht dabei fuer die anzahl an server also x=$servzahl) :(

anda_skoa
12-06-2003, 10:38
Du kannst ja die Variable im Ausdruck verwenden



LIST=""

#schleife
LIST=$(echo $LIST huhu)


Ciao,
_

senfmensch
12-06-2003, 13:16
also irgendwie bin ich verwirrt :confused: jetzt hab ich die schleife mit List=" $List \$bah$i \$fak$i " definiert. so dann natuerlich echo zum probieren: und es steht in der console: $bah1 $fak1 ... $bah7 $fak7 .
so dann wird Xdialog gestartet :
Xdialog --menubox "Choose the server to connect:" 20 120 0 \
"-df" "startet DeFraG" \
$List \
2> /tmp/q3menu.tmp

jetzt werden wieder nur die variabel-namen in Xdialog angezeigt alos so wie im anhang :( wenn ich aber bei Xdialog schreibe:
Xdialog --menubox "Choose the server to connect:" 20 120 0 \
"-df" "startet DeFraG" \
$bah1 $fak1 ... $bah7 $fak7 \
2> /tmp/q3menu.tmp
dann funktioniert die sache wunderpraechtig. ??? was kann man da machen? :(

senfmensch
12-06-2003, 23:08
mann hab ich das ganze umstaendlich gemacht :D mein code sieht jetzt so aus:

qstat="/usr/games/quakestat"
servadr1="217.160.168.36:27961"
servadr2="62.93.201.9:27000"

servzahl=`echo ${!servadr*} | wc -w`
x="$servzahl"
declare -i f=0
p=$(($servzahl-1))
List=""

while [ $f -le $p ]; do
f=f+1
eval serw="\$servadr$f"
fak=`$qstat -q3s $serw | grep $serw`
affe="\"$f\""
aff="\"$fak\""
List="$List $affe $aff "
done
echo $List
Xdialog --title "kermet" --menubox "Choose the server to connect:" 20 120 0 \
"-df" "startet DeFraG" `echo $List` 2> /tmp/q3menu.tmpecho $List gibt mir folgendes aus: "1" "217.160.168.36:27961 0/14 ra3map1 31 / 0 .........." "2" "62.93.201.9:27000 18/20 ra3map1 32 / 0 ......."
aber xdialog is wieder doof (warscheinlich eher ich :D ) und stellt das so wie im oberen bild im Anhang dar :(
wenn ich aber die ausgabe von $List nehme und das bei Xdialog einfueg (anstatt `echo $List` ) dann funktionierts einwandfrei und sieht aus wie im unteren bild im Anhang :(
mannooo ;) was koennt ich denn noch probieren?