GNU/Linux >> Linux Esercitazione >  >> Linux

Quali sono i parametri/variabili speciali della shell (bash)?

Ho trovato alcuni parametri speciali con Bash che iniziano con $ cartello. Esempio:quando stavo cercando lo stato di uscita sapevo di $? , ID processo tramite $$ ecc.

Quindi, sto condividendo questo post per sapere quali sono i parametri bash (shell) speciali e il loro utilizzo.

Risposta accettata:

Facendo riferimento a 3.4.2 Parametri speciali dal Manuale di riferimento di Bash.

Parametri speciali:

  • $*

($*) Si espande ai parametri posizionali, a partire da uno. Quando l'espansione non è tra virgolette, ogni parametro posizionale si espande in una parola separata. Nei contesti in cui viene eseguita, quelle parole sono soggette a un'ulteriore suddivisione delle parole e all'espansione del percorso. Quando l'espansione avviene tra virgolette doppie, si espande in una singola parola con il valore di ciascun parametro separato dal primo carattere della variabile speciale IFS. Cioè, “$*” equivale a “$1c$2c…”, dove c è il primo carattere del valore della variabile IFS. Se IFS non è impostato, i parametri sono separati da spazi. Se IFS è nullo, i parametri vengono uniti senza separatori intermedi.

  • [email protetta]

([email protetta]) Si espande ai parametri posizionali, a partire da uno. Quando l'espansione avviene tra virgolette, ogni parametro si espande in una parola separata. Cioè, "[email protetta]" equivale a "$ 1" "$ 2" .... Se l'espansione tra virgolette si verifica all'interno di una parola, l'espansione del primo parametro viene unita alla parte iniziale della parola originale e l'espansione dell'ultimo parametro viene unita all'ultima parte della parola originale. Quando non sono presenti parametri posizionali, "[email protected]" e [email protected] si espandono a zero (ovvero vengono rimossi).

  • $#

($#) Si espande al numero di parametri posizionali in decimale.

  • $?

($?) Si espande allo stato di uscita della pipeline in primo piano eseguita più di recente.

  • $-

($-, un trattino.) Si espande ai flag dell'opzione corrente come specificato al momento dell'invocazione, dal comando incorporato set o quelli impostati dalla shell stessa (come l'opzione -i).

  • $$

($$) Si espande all'ID di processo della shell. In una subshell () si espande all'ID processo della shell richiamante, non alla subshell.

  • $!

($!) Si espande all'ID processo dell'ultimo lavoro messo in background, sia eseguito come comando asincrono che usando il builtin bg (vedi Controllo lavoro incorporato).

  • $ 0

($0) Si espande al nome della shell o dello script della shell. Questo è impostato all'inizializzazione della shell. Se Bash viene invocato con un file di comandi (vedi script della shell), $0 viene impostato sul nome di quel file. Se Bash viene avviato con l'opzione -c (vedi Invocare Bash), allora $0 viene impostato sul primo argomento dopo la stringa da eseguire, se presente. In caso contrario, viene impostato sul nome del file utilizzato per invocare Bash, come indicato dall'argomento zero.

Questo può anche essere stampato dalla pagina man di bash:

$ man bash | awk '/Special Parameters$/','/Shell Variables$/'

Quanto sopra sono gli stessi dei parametri speciali definiti POSIX.

Correlati:cosa fa "set -f" in Korn Shell?

Inoltre, ci sono i parametri posizionali $1 , $2 , … che contengono gli argomenti della riga di comando per la shell o la funzione corrente (3.4.1 Parametri posizionali). Sono anche una funzione POSIX.

Anche le versioni precedenti di Bash elencavano $_ come parametro speciale, ma ora è elencato tra le altre variabili impostate dalla shell (5.2 Variabili Bash). $_ non è POSIX e altre shell potrebbero non supportarlo.

  • $_

($_ , un carattere di sottolineatura.) All'avvio della shell, impostare il percorso assoluto utilizzato per richiamare la shell o lo script della shell eseguito come passato nell'ambiente o nell'elenco degli argomenti. Successivamente, si espande all'ultimo argomento del comando precedente, dopo l'espansione. Impostare anche sul percorso completo utilizzato per richiamare ogni comando eseguito e inserito nell'ambiente esportato in quel comando. Durante il controllo della posta, questo parametro contiene il nome del file di posta.


Linux
  1. Personalizzazione della shell Bash

  2. Esistono convenzioni di denominazione per le variabili negli script della shell?

  3. Le variabili non ambientali vengono trasferite alla subshell invocate dalla sostituzione del comando?

  4. Come ottenere il Tty in cui è in esecuzione Bash?

  5. Quale shell dovrei usare:Tcsh Vs Bash??

Quali sono i separatori di parole Readline?

Capisci il significato di `$_`?

Funzioni nelle variabili Shell?

Condivisione di variabili su più script di shell?

Comprensione delle variabili in Bash Shell sotto Linux

I comandi della shell sono scritti in quale lingua?