hahaxd3
Anmeldungsdatum: 3. Dezember 2014
Beiträge: 28
|
Hallo liebe Mitglieder ☺
Ich möchte gerne in einen Case mehrere Argumente nutzen wie hier : case $2 $3 $4 in
....
...
...
aber das geht leider nicht kann mir einer helfen ? Bearbeitet von rklm: Block verkleinert. Bitte die Hinweise zur Syntax beachten.
|
xubuntufriese
Anmeldungsdatum: 3. Mai 2014
Beiträge: 340
|
Hm, drei Möglichkeiten (mindestens) 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 | #!/bin/bash
echo "übergeben wurden $1 $2 $3"
abc="A B C"
case "$1 $2 $3" in
"$abc" )
echo "a b c" ;;
"X Y Z" )
echo "x y z" ;;
U\ V\ W )
echo "u v w" ;;
* )
echo "alternativ" ;;
esac
|
$ ./casetest.sh U V W
übergeben wurden U V W
u v w
$ ./casetest.sh A B C
übergeben wurden A B C
a b c
$ ./casetest.sh X Y Z
übergeben wurden X Y Z
x y z
$ ./casetest.sh L M N
übergeben wurden L M N
alternativ Was passiert wenn in $1, $2 oder $3 auch Leerzeichen sind, müsste man noch extra testen.
|
hahaxd3
(Themenstarter)
Anmeldungsdatum: 3. Dezember 2014
Beiträge: 28
|
Also ich will das so haben :
skript parameter 1 2 3 4 ...
case in allen parameter
im falle das parameter 1 oder 2 oder 3 oder 4 ) tuhe bla bla bla
dasst selbe wie davor nur soll was anderes geschehen
vielen dankt
|
hahaxd3
(Themenstarter)
Anmeldungsdatum: 3. Dezember 2014
Beiträge: 28
|
Also bei mir siehst grade so aus :
| case "$2 $3 $4" in
-m) m="mv" ; shift
;;
-a) ap="y" ; shift
;;
-f) f="" ; shift
;;
"") echo "$man"
exit
;;
esac
|
|
rklm
Projektleitung
Anmeldungsdatum: 16. Oktober 2011
Beiträge: 12801
|
Punkt 1: Bitte lese die Hinweise zur Syntax (siehst Du am oberen rechten Rand vom Eingabefeld beim Posten) - und beachte sie auch! Punkt 2: Bitte erklär doch erst mal, was Du erreichen willst. Wofür glaubst Du mehrere Variablen beim case zu brauchen? Siehe auch Richtig fragen. Ciao robert - TL Moderatoren
|
xubuntufriese
Anmeldungsdatum: 3. Mai 2014
Beiträge: 340
|
Ist schwierig zu verstehen was Du möchtest. Du könntest sowas meinen: 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 | #!/bin/bash
while test -n "$1"; do
case "$1" in
A )
echo "A war dabei"
shift
;;
B )
echo "B war dabei"
shift
;;
Z )
echo "Z war dabei"
shift
;;
* )
echo "alternative"
shift
;;
esac
done
|
$ ./casetest2.sh A B X
A war dabei
B war dabei
alternative
$ ./casetest2.sh A B Z
A war dabei
B war dabei
Z war dabei
$ ./casetest2.sh A U Z
A war dabei
alternative
Z war dabei
|
hahaxd3
(Themenstarter)
Anmeldungsdatum: 3. Dezember 2014
Beiträge: 28
|
Alo ich baue ein skript mit optionen aber diese müssen nicht rein und können auch durcheinander sein
eine lösung hab ich schon gefunden aber diese möchte ich gerne vereinfachen bzw verkürzen.
Ich lasse einfach mal den anfang und ende weg da das ja wie ich denke nichts mit dem case zu tun hat.
So kann es aussehenn soll es aber nicht:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 | case $2 in
-m) m="mv"
;;
-a) ap="y"
;;
-f) f=""
;;
esac
case $3 in
-m) m="mv"
;;
-a) ap="y"
;;
-f) f=""
;;
esac
case $4 in
-m) m="mv"
;;
-a) ap="y"
;;
-f) f=""
;;
esac
|
|
xubuntufriese
Anmeldungsdatum: 3. Mai 2014
Beiträge: 340
|
Kann es sein, das Du getopts suchst?
|
hahaxd3
(Themenstarter)
Anmeldungsdatum: 3. Dezember 2014
Beiträge: 28
|
Leider verstehe ich das Überhaubt nicht ☺ Aber wenn es das ist ja denn such ich sowas
|
xubuntufriese
Anmeldungsdatum: 3. Mai 2014
Beiträge: 340
|
xubuntufriese schrieb: Kann es sein, das Du getopts suchst?
hahaxd3 schrieb: Leider verstehe ich das Überhaubt nicht ☺ Aber wenn es das ist ja denn such ich sowas
Du hast in höchstens 6 Minuten die angebotenen Quellen durchgearbeitet und sofort gewusst das Du es nicht verstehst? Faszinierend.
|
hahaxd3
(Themenstarter)
Anmeldungsdatum: 3. Dezember 2014
Beiträge: 28
|
nein ich hab mir das schonmal durchgelsen und versucht klappt einfach nicht sitze schon 2 tage dranne und deswegen frage ich ja hier
|
xubuntufriese
Anmeldungsdatum: 3. Mai 2014
Beiträge: 340
|
Dann lies mal hier, da wird u.a. auch getopts erklärt. Und das hier auch lesen. Und danach eventuell nochmal nachfragen, möglichst mit der Angabe was genau nicht verstanden wurde.
|
hahaxd3
(Themenstarter)
Anmeldungsdatum: 3. Dezember 2014
Beiträge: 28
|
Also jetz muss ich mal passen sorry hab alle Varianten durgegangen und es funkt. einfach nicht .. ☹ So sieht mein letzter versuch aus :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 | counter="0"
while getopts "maf" OPTION #[ $2 != '' ]
do
#[ $2 == "-m" ] && m="mv" && shift
#[ $2 == "-a" ] && ap="y" && shift
#[ $2 == "-f" ] && f="" && shift
case $OPTION in
-m) m="mv" ; (counter+=1)
;;
-a) ap="y" ; (counter+=1)
;;
-f) f="" ; (counter+=1)
;;
esac
done
|
|
xubuntufriese
Anmeldungsdatum: 3. Mai 2014
Beiträge: 340
|
hahaxd3 schrieb: Also jetz muss ich mal passen sorry hab alle Varianten durgegangen und es funkt. einfach nicht .. ☹
"Es funkt. einfach nicht" ist so aussagekräftig. Bekommst Du Fehlermeldungen? Wie startest Du Deinen Versuch? Mit
script.sh -m -a -f
script.sh -maf
script.sh maf
script.sh m a f
Oder wie? 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 | #!/bin/bash
counter=0
while getopts "maf" options
do
case $options in
m )
m="mv"
counter=$(($counter+1))
;;
a )
ap="y"
counter=$(($counter+1))
;;
f )
f="x"
counter=$(($counter+1))
;;
esac
done
echo "m=$m ap=$ap f=$f counter=$counter"
|
$ ./casetest3_getopts.sh -m -a -f
m=mv ap=y f=x counter=3
$ ./casetest3_getopts.sh -maf
m=mv ap=y f=x counter=3
$ ./casetest3_getopts.sh -ma -f
m=mv ap=y f=x counter=3
|
hahaxd3
(Themenstarter)
Anmeldungsdatum: 3. Dezember 2014
Beiträge: 28
|
Also meine Optionen werden einzeln abgerufen.
./skript ( hier kommt eine konstante Option entweder -p oder -s oder -h( -h ist help ) -m -a -f
./skript -a -m
./skript -f
./skript -m
./skript -a
./skript -f -a Also alles ist möglich durcheinander und man kann auch -a oder -m oder -f weglassen. Sorry bin heute schon etwas durch den Wind.
|