Kuinka määrittää Linux-komennon lähtö muuttujalle


Kun suoritat komennon, se tuottaa jonkinlaisen tulosteen: joko ohjelman tuloksen oletetaan tuottavan tai ohjelman suoritustietojen tila-/virheilmoituksia. Joskus saatat haluta tallentaa komennon tulosteen muuttujaan käytettäväksi myöhemmässä toiminnossa.

Tässä viestissä tarkastelemme erilaisia tapoja määrittää komentotulkkikomennon tulos muuttujalle, joka on erityisen hyödyllinen komentosarjan komentosarjatarkoituksiin.

Jos haluat tallentaa komennon tulosteen muuttujaan, voit käyttää komentotulkkikomennon korvausominaisuutta alla olevissa muodoissa:

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

Alla on muutamia esimerkkejä komentojen korvaamisesta.

Tässä ensimmäisessä esimerkissä tallennamme who-komennon (joka näyttää, kuka on kirjautunut järjestelmään) arvon muuttujaan CURRENT_USERS user:

CURRENT_USERS=$(who)

Sitten voimme käyttää muuttujaa lauseessa, joka näytetään echo-komennolla seuraavasti:

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

Yllä olevassa komennossa: lippu -e tarkoittaa, että tulkitsee kaikki käytetyt erotussekvenssit (kuten \n rivinvaihdolle). Välttääksesi ajan ja muistin tuhlaamisen suorittamalla komennon korvaaminen echo-komennossa seuraavasti:

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

Seuraavaksi havainnollistaa konsepti käyttämällä toista muotoa; voimme tallentaa nykyisen työhakemiston tiedostojen kokonaismäärän muuttujaan nimeltä FILES ja echo sen myöhemmin seuraavasti:

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

Siinä se nyt, tässä artikkelissa selitimme menetelmät, joilla komentotulkkikomennon tulos määritetään muuttujalle. Voit lisätä ajatuksesi tähän postaukseen alla olevan palauteosion kautta.