Hosting online gratuito per workstation

<Precedenti | Contenuti | Succ.>

Gestione dei parametri posizionali In massa

A volte è utile gestire tutti i parametri posizionali come un gruppo. Ad esempio, potremmo voler scrivere un "wrapper" attorno a un altro programma. Ciò significa creare uno script o una funzione shell che semplifica l'invocazione di un altro programma. Il wrapper, in questo caso, fornisce un elenco di opzioni della riga di comando e quindi passa un elenco di argomenti al programma di livello inferiore.

La shell fornisce due parametri speciali a questo scopo. Entrambi si espandono nell'elenco completo dei parametri posizionali, ma differiscono in modi piuttosto sottili. Sono:


Tabella 32-1: I parametri speciali * e @


Parametro Descrizione

Parametro Descrizione

$* Si espande nell'elenco dei parametri posizionali, a partire da 1. Se racchiuso tra virgolette doppie, si espande in una stringa tra virgolette doppie contenente tutti i parametri posizionali, ciascuno separato dal primo carattere della variabile shell IFS (per impostazione predefinita uno spazio).


$@ Si espande nell'elenco dei parametri posizionali, a partire da 1. Se racchiuso tra virgolette doppie, espande ciascun parametro posizionale in una parola separata racchiusa tra virgolette doppie.



Ecco uno script che mostra questi parametri speciali in azione:

Gestione dei parametri posizionali in massa


#! / Bin / bash

# posit-params3: script per dimostrare $* e $@ print_params () {

echo "\$1 = $1" echo "\$2 = $2" echo "\$3 = $3" echo "\$4 = $4"

}


pass_params () {

echo -e "\n" '$* :'; parametri_di_stampa $* echo -e "\n" '"$*" :'; parametri_di_stampa "$*" echo -e "\n" '$@ :'; parametri_di_stampa $@ echo -e "\n" '"$@" :'; parametri_di_stampa "$@"

}


pass_params "parola" "parole con spazi"

#! / Bin / bash

# posit-params3: script per dimostrare $* e $@ print_params () {

echo "\$1 = $1" echo "\$2 = $2" echo "\$3 = $3" echo "\$4 = $4"

}


pass_params () {

echo -e "\n" '$* :'; parametri_di_stampa $* echo -e "\n" '"$*" :'; parametri_di_stampa "$*" echo -e "\n" '$@ :'; parametri_di_stampa $@ echo -e "\n" '"$@" :'; parametri_di_stampa "$@"

}


pass_params "parola" "parole con spazi"


In questo programma piuttosto contorto, creiamo due argomenti: "parola" e "parole con spazi", e li passiamo al pass_params funzione. Tale funzione, a sua volta, li passa al parametri di stampa funzione, utilizzando ciascuno dei quattro metodi disponibili con i parametri speciali $* e $@Una volta eseguito, lo script rivela le differenze:


[io@linuxbox~]$ posit-param3


$* :


$1

=

parola

$2

=

parole

$3

=

con

$4

=

spazi

"$*" :


$1

=

parola parole con spazi

$2

=

$3

=

$4

=

$@ :


$1

=

parola

$2

=

parole

$3

=

con

$4

=

spazi

"$@" :

$1 = parola


$2 = parole con spazi

$ 3 =

$ 4 =

$2 = parole con spazi

$ 3 =

$ 4 =


Con i nostri argomenti, entrambi $* e $@ produce un risultato di quattro parole:

parola parole con spazi

"$*" produce un risultato composto da una sola parola:

"parole con spazi"

"$@" produce un risultato di due parole:

"parola" "parole con spazi"

che corrisponde al nostro intento effettivo. La lezione da trarre da questo è che, anche se la shell fornisce quattro modi diversi per ottenere l'elenco dei parametri posizionali, "$@" è di gran lunga il più utile per la maggior parte delle situazioni, perché preserva l'integrità di ciascun parametro posizionale.


Il miglior sistema operativo cloud computing su OnWorks: