PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Jeden 2ten Parameter ausgeben



19-12-2000, 15:48
Hallo Ihr Profis.
Ich der leider keiner bin habe eine Frage:

-------->-8------------

par[1]=$2
par[2]=$4
par[3]=$6
par[4]=$8
par[5]=$10
x=1
for test in "${par[x]}" == ""
do
echo ${par[x]}
x=`expr $x + 1`
done

---------->-8--------------

Der Code soll bewirken das nach start des Shellskriptes jeder 2te Parameter ausgegeben werden soll.
Mein Problem, wie geht es auser mit dieser $1 $2 usw.-Methode?
Außerdem werden nur 3 Parameter ausgegeben obwohl ich z.b. 8 Parameter eingebe, werden nur 3 statt 4 ausgegeben.

by the way: Kennt jemand ein saugutes Shell-Tutorial zum Downloaden?

Many thx

thommy
19-12-2000, 15:57
<pre>
#!/bin/sh

while [ "$#" -gt 0 ]; do
echo $1
shift 2
done
</pre>

Thomas

19-12-2000, 17:22
Danke ich werds gleich mal probieren.

:-)))

19-12-2000, 21:11
Schade,
es kommt immer
unexpected end of file

Habe genau das Script genommen und folgendes eingegeben:
sh 2param.sh erste zweite dritte vierte

Als Fehler zeigt er auf die Zeile wo done steht. Keine Ahnung woran das liegen könnte.

Weiß jemand Rat?
Oder kennt jemand ein gutes Tutorial? Habe leider kein Buch zur Hand.

thommy
20-12-2000, 09:50
Klingt so, als hättest Du vergessen, eine Klammer zu schließen oder eine ungerade Anzahl Anführungszeichen...

Davon abgesehen, hat das kleine Skript den Fehler, dass es sich bei einer ungeraden Anzahl Paramater aufhängt (da shift 2 dann nicht mehr bewirkt). Korrekt lautet es:

<pre>
#!/bin/sh

while [ "$#" -gt "0" ]; do
echo "$1"
test "$#" -eq "1" &amp;&amp; break
shift 2
done
</pre>

Ein Tutorial (allerdings mehr auf Anfänger zugeschnitten) findest Du im Linuxbuch unter http://www.saxsys.de/linux/ . In der Linuxfibel ist es leider noch nicht fertig (aber ich arbeite dran http://www.linuxforen.de/ubb/wink.gif)

Thomas

20-12-2000, 19:12
Danke Thommy, werds morgen gleich mal ausprobieren,
habe auch gemerkt, das es sich bei der ungeraden Anzahl Parameter aufhängt.

Also nochmals vielen Dank. Jeder muss es erst mal lernen.