Pagina 1 di 2
scrivere un comando con le sue opzioni con sh
Inviato: gio 19 gen 2006, 14:46
da dark0s
Ciao, vorrei scrivere uno script che funda da vero e proprio comando di shell, cioè un comando con le sue opzioni:
script -a ..... -b .......
Come faccio a mettere le opzioni con i relativi argomenti nel programma-script
Inviato: gio 19 gen 2006, 14:57
da gallows
Inviato: ven 20 gen 2006, 9:53
da aelsantex
Piccolo esempio:
while getopts a:t

OptStr ; do
case $OptStr in
a) AZIONE=$OPTARG ;;
t) TIPO_ESECUZIONE=$OPTARG ;;
v) LIVELLO_VERBOSE=$OPTARG ;;
*)
print_usage
exit 1
;;
esac
done
E poi anche il sito:
http://www.tldp.org/LDP/abs/html/
Inviato: sab 21 gen 2006, 18:43
da dark0s
Il costrutto case prevede qualcosa per selezionare un insieme di opzioni e poi una alternativa a tutte, del tipo:
case $1 in
a) Configura...
b) Configura...
c) ...
else
d) Rimuovi tutte le configurazioni precedenti
Inviato: sab 21 gen 2006, 19:25
da gallows
Forse ti riferisci a questo:
Codice: Seleziona tutto
case "$1" in
'-a')
echo "aaaaa"
;;
'-b')
echo "bbbbbb"
;;
'-c')
echo "ccccc"
;;
*)
echo "?????"
esac
Se non passi né a né b e né c, stampa "????"
Inviato: sab 21 gen 2006, 19:31
da dark0s
No, io dico qualcosa del genere:
"Esegue l'argomento della opzione a, esegue l'argomento b, ...
script -a -b ...
oppure
"Esegue l'argomento di una opzione che non può essere utilizzata con le altre". Cioè
script -r
e che rimuove tutte le configurazioni delle opzioni precedenti.
Inviato: sab 21 gen 2006, 19:34
da gallows
Forse se posti l'abbozzo dello script (commentato) è meglio.
Inviato: sab 21 gen 2006, 19:50
da dark0s
...nà parola..., sto utilizzando Windows, Linux è installato su un altro pc. L'intenzione dello script è di essere un vero e proprio "comando di shell". Comunque, più o meno, lo script è:
vi script
...
...
while getopts

s

n: OPZIONE; do
case $OPZIONE in
m) ETHM=$OPTARG;;
s) ETHS=$OPTARG;;
a) IPHOST=$OPTARG;;
n) NETMASK=$OPTARG;;
esac
Fai tutte le configurazioni necessarie con le variabili settate.
done
Vorrei sapere se è possibile inserire una opzione, che viene eseguita in alternativa a tutte quelle precedenti, per rimuovere tutte le configurazioni eseguite precedentemente.

Inviato: sab 21 gen 2006, 20:03
da gallows
Forse questo:
Codice: Seleziona tutto
case "$1" in
'-a')
ETHM=$OPTARG
;;
'-b')
ETHS=$OPTARG
;;
'-c')
IPHOST=$OPTARG
;;
'-d')
NETMASK=$OPTARG
;;
*)
ETHM=
ETHS=
IPHOST=
NETMASK=
?
Inviato: sab 21 gen 2006, 20:05
da dark0s
No perchè non c'è solo da rimuovere dei settaggi. Stog ad assì matt...
PS scusatemi l'espressione pugliese
Inviato: sab 21 gen 2006, 20:14
da gallows
Se devi fare tante cose ti consiglio di usare le funzioni.
Codice: Seleziona tutto
function reset_variables()
{
ETHM=
ETHS=
IPHOST=
NETMASK=
exit 0
}
function print_status()
{
for i in ETHM ETHS IPHOST NETMASK; do
echo $i
exit 0
}
function foo_bar()
{
#qualcosa ...
}
<-- snip -->
*)
reset_variables
print_status
foo_bar
esac
Inviato: mar 24 gen 2006, 0:31
da dark0s
E' possibile utilizzare opzioni con più di un di una lettera, del tipo s1 o s2 al posto della sola s.
Ho provato con:
while getopts :s1:s2:... OPZIONE; do
s1....
.....
.....
done
Insome s1 non si può utilizzare
Inviato: mar 24 gen 2006, 11:29
da Paoletta
dark0s ha scritto:E' possibile utilizzare opzioni con più di un di una lettera, del tipo s1 o s2 al posto della sola s.
Ho provato con:
while getopts :s1:s2:... OPZIONE; do
s1....
.....
.....
done
Insome s1 non si può utilizzare
a quanto ne so il comando getopt (non getopts) è basato sulla routine GNU getopt, che prende come opzioni delle singole lettere; prova a guardare il man, ma non credo che prenda più di una lettera come opzione.
guarda anche
http://www.lilik.it/~mirko/gapil/gapils ... 380002.3.2
Inviato: gio 26 gen 2006, 0:00
da urka58
questo dovrebbe servirti, probabilmente solo in parte....
Codice: Seleziona tutto
#!/bin/sh
until [ -z "$1" ]; do # Finché ci sono parametri...
case $1 in
a)
echo "faccio una cosa tipo a"
;;
b)
echo "faccio una cosa tipo b"
;;
c)
echo "faccio una cosa tipo c"
;;
esac
shift
done
Ciao
Inviato: gio 26 gen 2006, 13:24
da dark0s
A cosa serve il comando shift e come si usa?