Kuinka tallentaa komentolähtö muuttujana Bashissa? PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.

Kuinka tallentaa komentolähtö muuttujana Bashissa?

esittely

Bash-skripteissä komennon tulosteen määrittäminen muuttujille voi olla kätevää tallentamalla komentojen tulosteet ja käyttämällä niitä myöhemmin.

Tässä lyhyessä oppaassa tarkastellaan, kuinka voit tallentaa komennon tulosteen muuttujaksi Bashissa.

Muuttujien asettamisen perusteet

Komennon tulosteen tallentaminen muuttujaksi saavutetaan komentojen vaihto. Komennon korvaaminen on kääre, joka suorittaa komennon kohdassa a subshell-ympäristö, ja korvaa kääretyn komennon sen ympäristön vakiotulolla, jossa komento ajettiin. Tähän lähtöön voidaan sitten viitata myöhemmin, jos se liitetään referenssimuuttujaan!

Komentokorvaus voidaan saavuttaa selkämerkeillä tai dollarimerkillä suluilla:

`command`

$(command)

Keskustelua käydään siitä, onko `komento` (selkäpuikot) tai $(komento) (dollarin merkki ja sulut) tulisi käyttää "parhaana käytäntönä". $(command) toimii hyvin sisäkkäissä ja parantaa joissakin tapauksissa luettavuutta, mutta voit käyttää kumpaa tahansa syntaksia seuraavissa esimerkeissä.

Tästä huolimatta - komennon tulosteen määrittäminen muuttujalle Bashissa on yhtä helppoa kuin:

VARIABLE=$(command)
echo "${VARIABLE}"

Running ${variable} tunnetaan parametrin laajennus, ja sitä käytetään arvioimaan ja hakemaan viitemuuttujaan liittyvä arvo.

Katsotaanpa nyt yksinkertaista esimerkkiä muuttujan asettamisesta komennolla, joka muuttaa tulosteen väriä:

#!/bin/bash
GREEN=$(tput setaf 2)
echo "${GREEN}Please"

ORANGE=$(tput setaf 9)
echo "${ORANGE}Visit"

echo "${GREEN}Paris"

Katkelmassa olemme käyttäneet tput komennon ja määritti näiden komentojen palautetun arvon värikkään tekstin tulostamiseksi. The setaf muuttaa etualan väriä ja 3 (vihreä) ja 9 (oranssi) ovat värikoodeja.

Siirrymme nyt toiseen esimerkkiin, joka sisältää useita ehtoja muuttujien määrittämiseksi eri komentoille:

#!/bin/bash
PERSON=$(whoami)
echo -e "Hey ${PERSON}! I am Charlien"

DETAILS=$(uname -a)
echo -e "You're running this script on:n${DETAILS}n"

DATES=$(date)
echo -e "The script is being run on:n${DATES}n"

CREATE=$(touch $(date +"%d%m%Y").txt)
echo -e "A text file logging this run is created.${CREATE}n"

LOCATION=$(ls 
  -l *txt)
echo -e "Saved text file at: ${LOCATION}"

Yllä olevassa käsikirjoituksessa whoami komento palauttaa nykyisen käyttäjän käyttäjänimen. The uname -a palauttaa järjestelmätiedot ja date palauttaa nykyisen kellonajan ja päivämäärän.

Huomautus: Voimme ketjuttaa muuttujan määrityksen lisäämällä useita komentoja yhteen sisäkkäiseen kutsuun. The CREATE muuttuja sisältää tulosteen touch -komento, joka puolestaan ​​luo tiedoston ja asettaa tiedostonimen date +"%d%m%Y komento.

Tutustu käytännönläheiseen, käytännölliseen Gitin oppimisoppaaseemme, jossa on parhaat käytännöt, alan hyväksymät standardit ja mukana tuleva huijauslehti. Lopeta Git-komentojen googlailu ja oikeastaan oppia se!

Lopuksi lisäämme a multiline komentomuuttujan määrityskonsepti lisäämällä kenoviiva () välillä ls komento -l lippu näyttää vain tekstitiedostot käyttämällä *.txt. Kenoviiva on pakomerkki, joka kehottaa komentotulkkia olemaan tulkitsematta seuraavaa merkkiä.

In echo komennon, lisäsimme -e lippu käyttääksesi erikoismerkkiä, esim. n (uusi rivi), tulostaa tulos uudelle riville.

Saamme seuraavan tuloksen skriptin suorittamisen jälkeen:

$ ./variable.sh

Yhteenveto

Tässä lyhyessä oppaassa olemme tarkastelleet, kuinka voit asettaa komennon tulostuksen muuttujaksi Bashissa. Olemme tarkastelleet syntaksien välistä eroa komentojen vaihto, panee merkille luettavuuden parannukset $(command) yli backtick-pohjaisen korvaamisen. Tämän jälkeen olemme tarkastelleet useita esimerkkejä sekä yksinkertaisesta osoituksesta että ketjutetusta/sisäkkäisestä tulosten määrittämisestä.

Aikaleima:

Lisää aiheesta Stackabus