English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

传递参数Shell

Possiamo passare parametri allo script durante l'esecuzione del script di Shell, e il formato di acquisizione dei parametri all'interno dello script è:$n.n Rappresenta un numero, 1 è il primo parametro eseguito dallo script, 2 è il secondo parametro eseguito dallo script, ecc.

Esempio online

Nello esempio seguente passiamo tre parametri al script e li outputtiamo rispettivamente, tra cui $0 Il nome del file eseguito (compreso il percorso del file):

#!/bin/bash
# author:教程基础
# url:it.oldtoolbag.com
echo "Esempio di trasmissione parametri Shell!";
echo "Il nome del file eseguito: $0";
echo "Primo parametro: $1";
echo "Il secondo parametro è: $2";
echo "Il terzo parametro è: $3";

Imposta i permessi eseguibili per lo script e esegui lo script, i risultati di output sono come segue:

$ chmod +x test.sh 
$ ./test.sh 1 2 3
Esempio di trasmissione parametri Shell!
Il nome del file eseguito: ./test.sh
Primo parametro: 1
Il secondo parametro è: 2
Il terzo parametro è: 3

Inoltre, ci sono alcuni caratteri speciali utilizzati per elaborare i parametri:

Elaborazione dei parametriDescrizione
$#Numero di parametri passati al script
$*Mostra tutti i parametri passati al script come una singola stringa.
Se "$*" è racchiuso tra virgolette, viene outputto in forma di "$1 $2 … $n".
$$ID del processo corrente in esecuzione del script
$!ID del processo più recente in esecuzione in background
$@Uguale a $*, ma con virgolette e ciascun parametro è restituito all'interno delle virgolette.
Se "$@" è racchiuso tra virgolette, viene outputto in forma di "$1" "$2" … "$n".
$-Mostra le opzioni attualmente utilizzate da Shell, concomando setFunzione identica.
$?Mostra lo stato di uscita dell'ultimo comando. 0 indica l'assenza di errori, qualsiasi altro valore indica un errore.
#!/bin/bash
# author:教程基础
# url:it.oldtoolbag.com
echo "Esempio di trasmissione parametri Shell!";
echo "Primo parametro: $1";
echo "Numero di parametri: $#";
echo "Visualizzazione dei parametri come una stringa: $*";

Esegui lo script, i risultati sono come segue:

$ chmod +x test.sh 
$ ./test.sh 1 2 3
Esempio di trasmissione parametri Shell!
Primo parametro: 1
Numero di parametri: 3
Visualizzazione dei parametri come una stringa: 1 2 3

Differenza tra $* e $@:

  • Similitudini: entrambi citano tutti i parametri.

  • Differenze: si manifestano solo all'interno delle virgolette. Supponiamo che vengano scritti tre parametri durante l'esecuzione dello script 1, 2, 3, allora "*" è equivalente a "1 2 3" (passato un parametro), mentre "@" è equivalente a "1" "2" "3" (passati tre parametri).

#!/bin/bash
# author:教程基础
# url:it.oldtoolbag.com
echo "-- \$* dimostrazione ---"
for i in "$*"; do
    echo $i
fatto
echo "-- \$@ dimostrazione ---"
for i in "$@"; do
    echo $i
fatto

Esegui lo script, i risultati sono come segue:

$ chmod +x test.sh 
$ ./test.sh 1 2 3
-- $* dimostrazione ---
1 2 3
-- $@ dimostrazione ---
1
2
3