Il comando set Linux

Il comando set Linux

Il comando set Linux è un comando shell integrato che consente di visualizzare o impostare sia le variabili shell che l'ambiente. In questa guida, copriamo il comando set e dimostriamo i vari modi in cui l'utilità della linea di comando può essere utilizzata.

Sintassi di base

Il comando set prende la seguente sintassi:

$ Command -options Arguments

Opzioni di comando

Ci sono un certo numero di opzioni che possono essere utilizzate con il comando set. Esploriamo alcuni di loro:

  • -UN: L'opzione -a imposta tutte le variabili o le funzioni create o modificate per l'esportazione.
  • -B: L'opzione -B avvisa immediatamente l'utente quando vengono terminati i lavori di fondo.
  • -E: L'opzione -e indica a una shell di uscire se un comando produce uno stato di uscita diverso da zero. In poche parole, la shell esce quando il comando fallisce.
  • -F: L'opzione -F disabilita la generazione di filesseggi.
  • -H: L'opzione -h è abilitata per impostazione predefinita. Individua e quindi ricorda una funzione in quanto è in attesa di esecuzione.
  • -N: L'opzione -n ​​legge solo i comandi ma non riesce a eseguirli.
  • -T: L'opzione -t esce al momento della lettura e dell'esecuzione di un comando.
  • -u: L'opzione -u tratta variabili non definite o indefinite ad eccezione di parametri speciali come i jolly (*) o "@" come errori durante l'espansione dei parametri.
  • -V: L'opzione -v stampa le righe dell'ingresso della shell mentre vengono letti.
  • -X: L'opzione -x stampa gli argomenti di comando durante l'esecuzione

Valori di uscita

Di seguito sono riportati i valori di uscita della shell associati al comando set:

0: il comando ha avuto successo.

  1. Comando non riuscito a causa di un argomento di comando errato
  2. Errore di comando a causa di un argomento atteso che manca

Imposta il comando senza alcuna opzione

Senza alcun argomento, il comando set elenca tutte le variabili della shell, compresi i loro valori.

$ set

Imposta parametri posizionali con il comando set

Il comando set Linux può essere utilizzato per assegnare i valori ai parametri posizionali. Un parametro posizionale è una variabile in un programma di shell e il suo valore è indicato come $ n in cui n è una cifra che indica la posizione del parametro.

Il valore $ 1 è il primo parametro posizionale dopo il nome del file o del comando. Il valore di $ 2 è il secondo parametro e così via.

Supponiamo di eseguire il comando mostrato di seguito:

$ set blu rosso verde

Qui, il rosso corrisponde al parametro posizionale $ 1, il blu corrisponde al parametro $ 2 e, infine, Green corrisponde a $ 3.

Per elencare tutti i parametri nell'ordine di $ 1 $ 2 $ 3 Esegui il comando Echo di seguito:

$ echo "$*"

Per elencare il primo parametro, eseguire:

$ echo $ 1

Per elencare il secondo parametro, eseguire:

$ echo $ 2

E così via.

Utilizzare il comando Imposta per non acconsentire tutti i parametri posizionali

Per sconfiggere i parametri posizionali eseguire il comando set con doppi trattini - come mostrato.

$ set --

Ancora una volta, se provi a elencare i parametri posizionali, otterrai un output vuoto, il che implica che sono stati dist.

Ignora una variabile illimitata

Per impostazione predefinita, uno script shell si affaccia su una variabile indefinita. Nello script myscript.SH mostrato di seguito, la variabile $ foo non è ancora definita e quindi non esiste.

Quando lo script viene eseguito, restituisce una riga vuota per la riga che contiene una variabile inesistente e procede a eseguire la riga seguente:

$ ./myscript.sh

Questa anomalia è indesiderata e gli sviluppatori vorrebbero essere avvisati in caso di variabili non definite. La direttiva set -u all'inizio dello script stamperà un errore sulla shell se lo script viene eseguito in una variabile indefinita.

Quando lo script viene nuovamente eseguito, viene visualizzato l'errore su una variabile non legata.

Visualizza un errore se un comando è inesistente

Di solito, se un comando viene eseguito in un errore e non riesce a eseguire, la shell bash continuerà a eseguire i comandi rimanenti. Prendi, ad esempio, lo script shell di seguito:

Il comando foobar è inesistente e un errore deve essere visualizzato sulla shell bash quando viene eseguito lo script per mostrare che lo script in un problema. Tuttavia, ciò non accade e la shell va avanti per eseguire la riga successiva come mostrato:

Come l'esempio precedente, questa non è una buona pratica quando si scrivono script di shell, in particolare per la sicurezza e il debug. Idealmente, lo script dovrebbe fermarsi quando si trova un errore. Per affrontare questo scenario, definire il set di direttivo -e all'inizio dello script come mostrato.

Quando provi a eseguire di nuovo lo script, ti verrà eseguito nell'errore come mostrato:

Visualizza un errore nei comandi con i conti

Il set di direttive non funziona quando si tratta di comandi con le tue. Considera lo script qui sotto:

Quando si esegue lo script, restituisce un errore ma continua a eseguire il comando successivo:

Per superare questo ostacolo, passare la direttiva set -Eo Pipefail come mostrato:

$ set -eo pipefail

Questa volta, lo script termina e non esegue la riga successiva.

Definire le opzioni ALLEXPORT e NOTIFICA

Per impostare le opzioni ALEXPORT e NOTIFICA, Esegui il comando:

$ set -o alexport -o notifica

Conclusione

Questi erano alcuni esempi di come puoi usare il comando set negli script shell. Come osservato, il comando set può essere uno strumento utile nell'impostazione dei parametri posizionali e nel debug degli script di shell.