Hvordan tilordne utdata fra en Linux-kommando til en variabel


Når du kjører en kommando, produserer den en slags utdata: enten er resultatet av et program antatt å produsere eller status-/feilmeldinger om programutførelsesdetaljene. Noen ganger kan det være lurt å lagre utdataene fra en kommando i en variabel som skal brukes i en senere operasjon.

I dette innlegget vil vi se på de forskjellige måtene å tilordne utdata fra en shell-kommando til en variabel, spesielt nyttig for shell-skripting.

For å lagre utdataene fra en kommando i en variabel, kan du bruke funksjonen for substitusjon av shell-kommandoer i skjemaene nedenfor:

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

Nedenfor er noen eksempler på bruk av kommandoerstatning.

I dette første eksemplet vil vi lagre verdien av who (som viser hvem som er logget på systemet) kommandoen i variabelen CURRENT_USERS bruker:

CURRENT_USERS=$(who)

Deretter kan vi bruke variabelen i en setning som vises ved å bruke ekkokommandoen slik:

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

I kommandoen ovenfor: flagget -e betyr å tolke eventuelle escape-sekvenser (som \n for nylinje) som brukes. For å unngå å kaste bort tid og minne, utfør ganske enkelt kommandoerstatningen i ekkokommandoen som følger:

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

Deretter, for å demonstrere konseptet ved å bruke den andre formen; vi kan lagre det totale antallet filer i gjeldende arbeidskatalog i en variabel kalt FILES og echo det senere som følger:

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

Det er det for nå, i denne artikkelen forklarte vi metodene for å tilordne utdataene fra en shell-kommando til en variabel. Du kan legge til tankene dine til dette innlegget via tilbakemeldingsdelen nedenfor.