scrivere un comando con le sue opzioni con sh
Moderatore: Staff
Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Slackware, se l'argomento è generale usate il forum Gnu/Linux in genere.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.
La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Slackware, se l'argomento è generale usate il forum Gnu/Linux in genere.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.
La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
scrivere un comando con le sue opzioni con sh
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
script -a ..... -b .......
Come faccio a mettere le opzioni con i relativi argomenti nel programma-script
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/
while getopts a:t
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/
- gallows
- Staff

- Messaggi: 3471
- Iscritto il: lun 20 set 2004, 0:00
- Desktop: cwm
- Distribuzione: OpenBSD
- Località: ~/
- Contatta:
Forse ti riferisci a questo:
Se non passi né a né b e né c, stampa "????"
Codice: Seleziona tutto
case "$1" in
'-a')
echo "aaaaa"
;;
'-b')
echo "bbbbbb"
;;
'-c')
echo "ccccc"
;;
*)
echo "?????"
esac...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.

vi script
...
...
while getopts
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.
- gallows
- Staff

- Messaggi: 3471
- Iscritto il: lun 20 set 2004, 0:00
- Desktop: cwm
- Distribuzione: OpenBSD
- Località: ~/
- Contatta:
Forse questo:
?
Codice: Seleziona tutto
case "$1" in
'-a')
ETHM=$OPTARG
;;
'-b')
ETHS=$OPTARG
;;
'-c')
IPHOST=$OPTARG
;;
'-d')
NETMASK=$OPTARG
;;
*)
ETHM=
ETHS=
IPHOST=
NETMASK=- gallows
- Staff

- Messaggi: 3471
- Iscritto il: lun 20 set 2004, 0:00
- Desktop: cwm
- Distribuzione: OpenBSD
- Località: ~/
- Contatta:
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
- Paoletta
- Staff

- Messaggi: 3975
- Iscritto il: lun 25 apr 2005, 0:00
- Slackware: 14.2 - 64 bit
- Desktop: fluxbox
- Località: Varese
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.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
guarda anche
http://www.lilik.it/~mirko/gapil/gapils ... 380002.3.2
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

