<Precedenti | Contenuti | Succ.>
shift – Accesso a molti argomenti
Ma cosa succede quando forniamo al programma un gran numero di argomenti come questo:
[io@linuxbox~]$ parametro positivo *
Numero di argomenti: 82
$0 = /home/me/bin/posit-param
$1 = indirizzi.ldif
$2 = cestino
$3 = segnalibri.html
$4 = debian-500-i386-netinst.iso
$5 = debian-500-i386-netinst.jigdo
$6 = debian-500-i386-netinst.template
$7 = debian-cd_info.tar.gz
$8 = Desktop
$9 = dirlist-bin.txt
$8 = Desktop
$9 = dirlist-bin.txt
In questo sistema di esempio, il carattere jolly * si espande in 82 argomenti. Come possiamo elaborarne così tanti? La shell fornisce un metodo, seppur goffo, per farlo. spostamento il comando fa sì che tutti i parametri si "spostino verso il basso di uno" ogni volta che viene eseguito. Infatti, utilizzando spostamento, è possibile cavarsela con un solo parametro (oltre a $0, che non cambia mai):
#! / Bin / bash
# posit-param2: script per visualizzare tutti gli argomenti count=1
mentre [[ $# -gt 0 ]]; fai
echo "Argomento $count = $1" count=$((count + 1))
turno fatto
#! / Bin / bash
# posit-param2: script per visualizzare tutti gli argomenti count=1
mentre [[ $# -gt 0 ]]; fai
echo "Argomento $count = $1" count=$((count + 1))
turno fatto
Ogni volta spostamento viene eseguito, il valore di $2 viene spostato in $1, il valore di $3 viene spostato in $2 e così via. Il valore di $# viene anche ridotto di uno.
Nel posit-param2 programma, creiamo un ciclo che valuta il numero di argomenti rimanenti e continua finché ce n'è almeno uno. Visualizziamo l'argomento corrente, incrementiamo la variabile contare con ogni iterazione del ciclo per fornire un conteggio in esecuzione del numero di argomenti elaborati e, infine, eseguire un spostamento caricare
$1 con l'argomento successivo. Ecco il programma in funzione:
[io@linuxbox~]$ posit-param2 abcd
Argomento 1 = a Argomento 2 = b Argomento 3 = c Argomento 4 = d
[io@linuxbox~]$ posit-param2 abcd
Argomento 1 = a Argomento 2 = b Argomento 3 = c Argomento 4 = d