Quando si esegue un comando, si produce una sorta 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 per assegnare l'output di un comando di shell a una variabile, particolarmente utile per lo scopo di scripting della 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 di who
(che mostra chi è connesso al sistema) comando nella variabile CURRENT_USERS
utente:
$ CURRENT_USERS=$(who)
Quindi possiamo usare la variabile in una frase visualizzata usando 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 nuova riga) utilizzato. Per evitare perdite di tempo oltre che di memoria, esegui semplicemente 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 eco in seguito 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 a una variabile. Puoi aggiungere i tuoi pensieri a questo post tramite la sezione feedback qui sotto.