Cos'è un parametro posizionale?

Un parametro posizionale è un argomento specificato sulla riga di comando, utilizzato per avviare il processo corrente in una shell. I valori dei parametri posizionali sono memorizzati in un set speciale di variabili gestito dalla shell.

Variabili che memorizzano i parametri posizionali

Un tipico esempio di shell che utilizza i parametri posizionali è bash. Puoi usare bash su Linux, BSD, macOS X e Windows 10.

Considera il seguente comando bash. Il nome del comando è mycommand . La riga di comando ha tre parametri: uno, due e tre quattro .

 mycommand one two "three four" 

Suggerimento: i parametri posizionali sono delimitati da uno spazio. La shell interpreta le cose dopo gli spazi come parametri individuali. Se il parametro stesso contiene uno spazio, racchiuderlo tra virgolette, come in "tre quattro", sopra.

Mentre mycommand è in esecuzione, bash fornisce le seguenti variabili shell:

Nome variabileValore
$ 0myCommand
$ 1uno
$ 2Due
$ 3tre quattro
$ #3
[email protetta]uno due tre quattro
$ *uno due tre quattro

La variabile $ 0 è impostata sulla prima parola del comando - il nome del comando. Questa variabile è utile perché i comandi possono essere rinominati o eseguiti utilizzando un collegamento simbolico. Alcuni programmi si comportano in modo diverso a seconda del nome del comando utilizzato per eseguire il programma. $ 0 consente a un programma di vedere quale nome del comando lo ha lanciato.

Le variabili $ 1, $ 2 e $ 3 contengono rispettivamente i valori del primo, del secondo e del terzo parametro. Se c'era un quarto parametro, il suo valore sarebbe posto nella variabile $ 4 . È possibile accedere ai parametri superiori a 9 utilizzando parentesi graffe attorno al numero; ad esempio $ {10} sarebbe il decimo parametro e $ {123} sarebbe il 123esimo.

La variabile $ # contiene il numero di parametri posizionali, escluso $ 0.

La variabile [email protected] contiene il valore di tutti i parametri posizionali, escluso $ 0.

La variabile $ * è la stessa di [email protected], tranne quando è doppia citazione. Quando racchiuso tra virgolette doppie, $ * si espande a $ 1c $ 2c $ 3c ... dove c è il primo carattere di $ IFS, la variabile di separatore di campo interno di bash. L'IFS viene utilizzato per la divisione delle parole e il suo valore predefinito è "spazio, tabulazione o nuova riga" - questo è dove bash vede la fine di una parola e l'inizio della successiva.

Se il valore di $ IFS è " _ " (un carattere di sottolineatura), "[email protected]" si espande in:

 uno due tre quattro 

Mentre "$ *" si espande in:

 uno due tre quattro 

Esempi

Ecco alcuni esempi di utilizzo dei parametri posizionali in bash.

Usando il comando integrato set, il valore di [email protected] può essere modificato per la shell corrente. Tutto dopo set - verrà registrato come parametro posizionale.

 set - one two "three four" 

Ora possiamo scorrere su queste variabili usando per ... in :

 per arg in [email protected]; fai echo "$ arg"; fatto 
 uno due tre quattro 

In bash, [email protected] è l'elenco predefinito per iterare quando si esegue per, quindi questo comando funziona anche:

 per arg; fai echo "$ arg"; fatto 
 uno due tre quattro 

L'iterazione di "$ *" (con virgolette doppie) fornirà una stringa concatenata di parametri posizionali, unita al primo carattere di $ IFS :

 IFS = ""; per arg in "$ *"; fai echo "$ arg"; fatto 
 uno due tre quattro 

Per ulteriori informazioni, consultare la documentazione della shell dei comandi di bash.

Parametro, termini di programmazione