BASH komandos išvestis kintamajam

Bash Command Output Variable



Įvairių tipų „bash“ komandas reikia paleisti iš terminalo, atsižvelgiant į vartotojo reikalavimus. Kai vartotojas paleidžia bet kurią komandą iš terminalo, jis parodo išvestį, jei nėra klaidos, kitaip jis parodo klaidos pranešimą. Kartais komandos išvestį reikia saugoti kintamajame, kad būtų galima naudoti ateityje. Šiam tikslui gali būti naudojama „Shell“ komandos pakeitimo funkcija „bash“. Šiame vadove parodyta, kaip kintamajame galite išsaugoti įvairių tipų apvalkalo komandas.

kintamasis= $(komandą)
kintamasis= $(komandą [variantas…]argumentas1 argumentas2 ...)
kintamasis= $(/kelias/į/komandą)

ARBA







kintamasis=``komandą``
kintamasis=``komandą [variantas…]argumentas1 argumentas2 ...``
kintamasis=`/kelias/į/komandą``

*** Pastaba: Naudodami aukščiau pateiktas komandas, nenaudokite tarpo prieš ir po lygybės ženklo.



Vienos komandos išvestis į kintamąjį

„Bash“ komandos gali būti naudojamos be jokių parinkčių ir argumentų toms komandoms, kuriose šios dalys yra neprivalomos. Šie du pavyzdžiai parodo paprastų komandų pakeitimo naudojimą.



1 pavyzdys:

bash ` data “ komanda naudojama dabartinei datai ir laikui parodyti. Šis scenarijus išsaugos „išvestį data “ komandą į $ dabartinė data kintamasis naudojant komandų pakeitimą.





$dabartinė data= $(data)
$išmetė 'Šiandien yra$ current_date'

Išėjimas:



2 pavyzdys:

`pwd` komanda rodo dabartinio darbo katalogo kelią. Šis scenarijus saugo išvestį `pwd` komandą į kintamąjį, $ current_dir ir šio kintamojo reikšmė spausdinama naudojant „aidas“ komandą.

$dabartinis_dir=``pwd``
$išmetė „Dabartinis katalogas yra:$ current_dir'

Išėjimas:

Komanda su pasirinkimu ir argumentais

Pasirinkimas ir argumentas yra privalomi kai kurioms „bash“ komandoms. Šie pavyzdžiai parodo, kaip galite išsaugoti komandos išvestį su galimybe ir argumentu į kintamąjį.

3 pavyzdys:

Bash ` wc komanda naudojama skaičiuoti bendrą bet kurio failo eilučių, žodžių ir simbolių skaičių. Ši komanda naudoja -c, -w ir -l kaip parinktį ir failo pavadinimą kaip argumentą išvesties generavimui. Sukurkite teksto failą pavadinimu vaisiai.txt su šiais duomenimis, kad išbandytumėte kitą scenarijų.
vaisiai.txt

vaisiai.txt
Mango
Oranžinė
Bananas
Vynuogė
Gvajava
„Apple“

Vykdykite šias komandas, kad suskaičiuotumėte ir išsaugotumėte bendrą žodžių skaičių vaisiai.txt failą į kintamąjį, $ count_words ir spausdinkite reikšmę naudodami „ aidas ' komandą.

$count_words=``wc vaisiai.txt``
$išmetė „Iš viso žodžių vaisiuose. Txt yra$ count_words'

Išėjimas:

4 pavyzdys:

'supjaustyti' yra dar viena „bash“ komanda, kuri išvesties generavimui naudoja parinktį ir argumentą. Sukurkite teksto failą pavadinimu weekday.txt su septynių darbo dienų pavadinimais, kad paleistumėte kitą scenarijų.

weekday.txt

Pirmadienis
Antradienį
Trečiadienį
Ketvirtadienis
Penktadienis
Šeštadienis
Sekmadienis

Sukurkite bash failą pavadinimu cmdsub1.sh su šiuo scenarijumi. Šiame scenarijuje tuo tarpu kilpa naudojama skaityti turinį weekday.txt failą eilutėje ir perskaitykite pirmuosius tris kiekvienos eilutės simbolius naudodami „ supjaustyti ' komandą. Po pjovimo eilutės reikšmė saugoma kintamajame $ diena . Tada, jei teiginys naudojamas patikrinti reikšmę $ diena yra ' Saulė ' arba ne. Išvestis bus spausdinama ' Sekmadienis yra šventė „Kai, jei sąlyga yra teisinga, ji išspausdins reikšmę $ diena .

cmdsub1.sh

#!/bin/bash
failo pavadinimas=„weekday.txt“
tuo tarpu skaitytilinija;daryti
dieną=``išmetė $ eilutė | supjaustyti -c 1-3``
jei [ $ diena=='Saulė' ]
tada
išmetė „Sekmadienis yra šventė“
Kitas
išmetė $ diena
būti
padaryta<$ failo pavadinimas

Paleiskite scenarijų.

$katėweekday.txt
$mušticmdsub1.sh

Išėjimas:

Komandos pakeitimo naudojimas cikle

Komandų pakeitimo išvestį galite išsaugoti bet kuriame kilpos kintamajame, kuris parodytas kitame pavyzdyje.

5 pavyzdys:

Sukurkite failą pavadinimu cmdsub2.sh su šiuo kodu. Čia, ` ls -d * / `komanda naudojama norint paimti visus katalogų sąrašus iš dabartinio katalogo. Čia ciklas naudojamas norint skaityti kiekvieną katalogą iš išvesties ir išsaugoti jį kintamajame $ dirname kuris spausdinamas vėliau.

cmdsub2.sh

#!/bin/bash
dėl dirvardas į$(ls -d * /)
daryti
išmetė '$ dirname'
padaryta

Paleiskite scenarijų.

$mušticmdsub2.sh

Išėjimas:

Naudojant įdėtas komandas

Kaip galite naudoti kelias komandas naudodami vamzdį (|), parodyta ankstesniame pavyzdyje. Tačiau pakeisdami komandas galite naudoti įdėtas komandas, kai pirmosios komandos išvestis priklauso nuo antrosios komandos išvesties ir veikia priešingai komandai pipe (|).

Įdėtos komandos sintaksė:

kur=``komanda1 ``komandą``

6 pavyzdys:

Dvi komandos, išmetė 'ir' PSO `yra naudojami šiame pavyzdyje kaip įdėta komanda. Čia, ` PSO `komanda pirmiausia bus vykdoma ir išspausdins vartotojo informaciją apie šiuo metu prisijungusį vartotoją. Išėjimas iš „ PSO „komanda bus vykdoma iki“ išmetė „komanda ir išvestis“ išmetė `išsaugos kintamajame $ var . Čia išvestis „ išmetė „komanda priklauso nuo išvesties“ PSO `komanda.

$kur=``išmetė``PSO``
$išmetė $ var

Išėjimas:

Naudojant komandų kelią

Jei žinote komandos kelią, galite paleisti komandą nurodydami komandos kelią, kai naudojamas komandos pakeitimas. Šis pavyzdys parodo komandų kelio naudojimą.

7 pavyzdys:

„whoami“ komanda rodo šiuo metu prisijungusio vartotojo vartotojo vardą. Pagal numatytuosius nustatymus ši komanda saugoma / usr/ esu/ aplanką. Vykdykite šį scenarijų, kad paleistumėte ' oi` komanda naudojant kelią ir saugoti kintamajame, $ išvestis, ir atspausdinkite reikšmę $ išvestis .

$produkcija= $(/usr/esu/kas aš esu)
$išmetė $ išvestis

Išėjimas:

Naudojant komandinės eilutės argumentą

Komandos eilutės argumentą su komanda galite naudoti kaip komandų pakeitimo argumentą.

8 pavyzdys:

Sukurkite bash failą pavadinimu cmdsub3.sh su šiuo scenarijumi. ` bazinis pavadinimas `komanda čia naudojama norint gauti failo pavadinimą iš 2antrakomandinės eilutės argumentas ir saugomas kintamajame, $ failo pavadinimas . Mes žinome 1stkomandinės eilutės argumentas yra vykdančiojo scenarijaus pavadinimas, žymimas $ 0.

#!/bin/bash
failo pavadinimas=``bazinis pavadinimas 1 USD``
išmetė „Failo pavadinimas yra$ failo pavadinimas“.

Paleiskite scenarijų naudodami šią argumento reikšmę.

$mušticmdsub3.sh darbalaukis/temp/sveiki.txt

Čia, bazinis pavadinimas iš kelio, Stalinis kompiuteris/temp/hello.txt yra ' sveiki.txt “. Taigi, vertė $ failo pavadinimas bus sveiki.txt .

Išėjimas:

Išvada:

Šioje pamokoje pateikiami įvairūs komandų pakeitimų naudojimo būdai. Jei jums reikia dirbti su keliomis komandomis arba priklausomomis komandomis ir išsaugoti rezultatą laikinai, kad vėliau atliktumėte kitas užduotis, galite naudoti šią funkciją savo scenarijuje, kad gautumėte išvestį.

Daugiau informacijos vaizdo įraše: