Cum se atribuie ieșirea unei comenzi Linux unei variabile


Când rulați o comandă, aceasta produce un fel de ieșire: fie rezultatul unui program ar trebui să producă, fie mesaje de stare/eroare ale detaliilor execuției programului. Uneori, poate doriți să stocați rezultatul unei comenzi într-o variabilă pentru a fi folosită într-o operațiune ulterioară.

În această postare, vom trece în revistă diferitele modalități de atribuire a ieșirii unei comenzi shell unei variabile, util în mod special pentru scopul scriptării shell.

Pentru a stoca rezultatul unei comenzi într-o variabilă, puteți utiliza caracteristica de substituire a comenzii shell în formularele de mai jos:

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

Mai jos sunt câteva exemple de utilizare a înlocuirii comenzilor.

În acest prim exemplu, vom stoca valoarea comenzii who (care arată cine este conectat pe sistem) în variabila utilizator CURRENT_USERS:

CURRENT_USERS=$(who)

Apoi putem folosi variabila într-o propoziție afișată folosind comanda echo astfel:

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

În comanda de mai sus: marcajul -e înseamnă interpretarea oricăror secvențe de escape (cum ar fi \n pentru newline) utilizate. Pentru a evita pierderea timpului și a memoriei, pur și simplu efectuați înlocuirea comenzii în cadrul comenzii echo, după cum urmează:

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

Apoi, pentru a demonstra conceptul folosind a doua formă; putem stoca numărul total de fișiere din directorul de lucru curent într-o variabilă numită FILES și echo mai târziu, după cum urmează:

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

Asta este pentru moment, în acest articol, am explicat metodele de atribuire a ieșirii unei comenzi shell unei variabile. Puteți adăuga gândurile dvs. la această postare prin secțiunea de feedback de mai jos.