Pagina 1 di 1

bash_scripting

Inviato: ven 1 lug 2005, 14:17
da Sawk
ho un problema con un case di bash.
Avevo intenzione di definire delle condizioni solo per un determinato numero di case.
Ad esempio dire che fino al caso -h mi da un output di un tipo.
Dal -e al -p un altro.
Sempre con lo stesso "case $1 in"
Ovviamente devono risultare diverse per condizioni diverse

Inviato: ven 1 lug 2005, 14:38
da TheSnowBoarder
#! /bin/bash

echo "Inserisci qualcosa "
read input

case $input in

[a-g])
echo "Hai messo dalla a fino a g"
;;

[h-z])
echo "Hai messo dalla h fino alla z"
;;

esac

Inviato: ven 1 lug 2005, 15:56
da Sawk
forse mi sono spiegato male :D
Io intendo dire dal parametro x al parametro y

case $1 in
-p)
echo "p"
;;
-a)
echo "a"
;;

# ora avevo intenzione di fare in modo che le prossime opzioni rispettivamente
# -c - f funzionino solo se io ho -a = 1

if [ -a = 1 ]; then

-c)
echo "c"
;;
-f)
echo "f"
;;
fi
esac

In questo modo però non va....

Inviato: ven 1 lug 2005, 16:06
da useless
non credo che si possa fare una cosa del genere. devi mettere l'if dentro a ogni case.

Inviato: ven 1 lug 2005, 16:25
da Sawk
mettere due case differenti come è possibile farlo ? Ho provato pure quello ma senza risultato sembrerebbe prenda dolo la prima ma non la seconda variabile di case

Inviato: ven 1 lug 2005, 17:14
da useless
esempio?

Inviato: ven 1 lug 2005, 17:41
da Sawk
case $1 in
-a)
echo "a"
;;
esac
case $2 in
-d)
echo "d"
;;
esac

questo script non andrà mai per chè legge solo la prima variabile $1 e non $2
:D

Inviato: ven 1 lug 2005, 17:56
da useless
xké non dovrebbe andare? xò vengono eseguiti uno dopo l'altro.

Inviato: ven 1 lug 2005, 18:10
da TheSnowBoarder
#! /bin/bash

for flag in $@
do
case $flag in

-a)
echo "-a"
;;

-b)
echo "-b"
;;

-c)
echo "-c"
;;

esac
done

Inviato: ven 1 lug 2005, 18:51
da Sawk
useless...provare per credere :D
Anche io credevo che mettendo due case li prendeva..invece no :)

Inviato: sab 2 lug 2005, 19:04
da useless
sukko@unholycathedral ~ $ pico c.sh
sukko@unholycathedral ~ $ sh c.sh -a -d
a
d
sukko@unholycathedral ~ $
è esattamente quel che dovrebbe fare!