Ricerca nel sito web

Come assegnare l'output di un comando Linux a una variabile


Quando si esegue un comando, viene prodotto un qualche tipo di output: si suppone che il risultato di un programma produca o messaggi di stato/errore dei dettagli di esecuzione del programma. A volte, potresti voler memorizzare l'output di un comando in una variabile da utilizzare in un'operazione successiva.

In questo post esamineremo i diversi modi di assegnare l'output di un comando di shell a una variabile, particolarmente utile per scopi di scripting di shell.

Per memorizzare l'output di un comando in una variabile, puoi utilizzare la funzione di sostituzione dei comandi della shell nei moduli seguenti:

variable_name=$(command)
variable_name=$(command [option ...] arg1 arg2 ...)
OR
variable_name='command'
variable_name='command [option ...] arg1 arg2 ...'

Di seguito sono riportati alcuni esempi di utilizzo della sostituzione dei comandi.

In questo primo esempio, memorizzeremo il valore del comando who (che mostra chi è connesso al sistema) nella variabile CURRENT_USERS user:

CURRENT_USERS=$(who)

Quindi possiamo utilizzare la variabile in una frase visualizzata utilizzando il comando echo in questo modo:

echo -e "The following users are logged on the system:\n\n $CURRENT_USERS"

Nel comando sopra: il flag -e significa interpretare qualsiasi sequenza di escape (come \n per newline) utilizzata. Per evitare di sprecare tempo e memoria, è sufficiente eseguire la sostituzione del comando all'interno del comando echo come segue:

echo -e "The following users are logged on the system:\n\n $(who)"

Successivamente, per dimostrare il concetto utilizzando la seconda forma; possiamo memorizzare il numero totale di file nella directory di lavoro corrente in una variabile chiamata FILES e echo successivamente come segue:

FILES=`sudo find . -type f -print | wc -l`
echo "There are $FILES in the current working directory."

Per ora è tutto, in questo articolo abbiamo spiegato i metodi per assegnare l'output di un comando di shell ad una variabile. Puoi aggiungere i tuoi pensieri a questo post tramite la sezione feedback qui sotto.