BASH käsu väljund muutujale

Bash Command Output Variable

Vastavalt kasutaja vajadustele tuleb terminalist käivitada erinevat tüüpi bash -käske. Kui kasutaja käivitab terminalist mis tahes käsu, näitab see väljundit, kui viga pole, vastasel juhul kuvatakse veateade. Mõnikord tuleb käsu väljund salvestada muutujaks edaspidiseks kasutamiseks. Sel eesmärgil saab kasutada bash -i Shelli käsu asendamise funktsiooni. Selles juhendis on näidatud, kuidas saate seda funktsiooni kasutades erinevat tüüpi kestkäsklusi muutujale salvestada.

muutuja= $(käsk)
muutuja= $(käsk [valik…]argument1 argumendid2 ...)
muutuja= $(/tee/et/käsk)

VÕI



muutuja=''käsk''
muutuja=''käsk [valik…]argument1 argumendid2 ...''
muutuja=`/tee/et/käsk''

*** Märkus: Ärge kasutage ülaltoodud käskude kasutamisel tühikut enne ja pärast võrdusmärki.



Ühe käsu väljund muutujale

Bash -käske saab kasutada ilma valikute ja argumentideta nende käskude jaoks, kus need osad on valikulised. Järgmised kaks näidet näitavad käsu lihtsa asendamise võimalusi.



Näide#1:

bash ` kuupäev ' käsku kasutatakse praeguse kuupäeva ja kellaaja kuvamiseks. Järgmine skript salvestab `väljundi kuupäev ' käsk $ tänane kuupäev muutuja käsu asendamise abil.

$tänane kuupäev= $(kuupäev)
$viskas välja 'Täna on$ current_date'

Väljund:



Näide#2:

`pwd` käsk näitab praeguse töökataloogi teed. Järgmine skript salvestab väljundi `pwd` käsk muutuja sisse, $ current_dir ja selle muutuja väärtus trükitakse, kasutades `kaja` käsk.

$praegune_dir=''pwd''
$viskas välja 'Praegune kataloog on:$ current_dir'

Väljund:

Käsk koos valiku ja argumendiga

Valik ja argument on mõnede bash -käskude jaoks kohustuslikud. Järgmised näited näitavad, kuidas saate käsu väljundit koos valiku ja argumendiga muutujale salvestada.

Näide#3:

Bash ` tualett käsku kasutatakse mis tahes faili ridade, sõnade ja märkide koguarvu loendamiseks. See käsk kasutab väljundi genereerimiseks argumendina valikut -c, -w ja -l ning failinime. Looge tekstifail nimega puuviljad.txt järgmise skripti testimiseks järgmiste andmetega.
puuviljad.txt

puuviljad.txt
Mango
Oranž
Banaan
Viinamarjad
Guajaav
Apple

Käivitage järgmised käsud sõnade koguarvu loendamiseks ja salvestamiseks puuviljad.txt fail muutujaks, $ count_words ja printige väärtus, kasutades klahvi ` kaja` käsk.

$count_words=''tualett -sissepuuviljad.txt''
$viskas välja 'Sõnade arv puuviljades. Txt on$ count_words'

Väljund:

Näide#4:

`lõigatud` on veel üks bash -käsk, mis kasutab väljundi genereerimiseks suvandit ja argumenti. Looge tekstifail nimega weekday.txt seitsme nädalapäeva nimedega, et käivitada järgmine skript.

weekday.txt

Esmaspäev
Teisipäev
Kolmapäev
Neljapäev
Reede
Laupäev
Pühapäev

Looge bash -fail nimega cmdsub1.sh järgmise skriptiga. Selles skriptis samas tsüklit kasutatakse sisu lugemiseks weekday.txt fail rida -realt ja lugege iga rea ​​kolm esimest märki, kasutades klahvi ` lõigatud ` käsk. Pärast lõikamist salvestatakse stringi väärtus muutujale $ päev . Järgmisena, kui lauset kasutatakse väärtuse kontrollimiseks $ päev on ' Päike ' või mitte. Väljund prinditakse ' Pühapäev on püha „Kui tingimus vastab tõele, vastasel juhul prindib see väärtuse $ päev .

cmdsub1.sh

#!/bin/bash
faili nimi='weekday.txt'
samas loerida;teha
päev=''viskas välja $ rida | lõigatud -c 1-3''
kui [ $ päev=='Päike' ]
siis
viskas välja 'Pühapäev on püha'
muidu
viskas välja $ päev
olla
tehtud<$ failinimi

Käivitage skript.

$kassweekday.txt
$löömacmdsub1.sh

Väljund:

Käsu asendamise kasutamine silmus

Käskude asendamise väljundi saate salvestada mis tahes silmuse muutujale, mis on näidatud järgmises näites.

Näide#5:

Looge fail nimega cmdsub2.sh järgmise koodiga. Siin, ` ls -d * / käsku kasutatakse kõigi kataloogide loendi hankimiseks praegusest kataloogist. Siin kasutatakse tsüklit, et lugeda iga kataloogi väljundist ja salvestada see muutujale $ dirname mis trükitakse hiljem.

cmdsub2.sh

#!/bin/bash
eest dirigenimi sisse$(ls -d * /)
teha
viskas välja '$ dirname'
tehtud

Käivitage skript.

$löömacmdsub2.sh

Väljund:

Pesakäskude kasutamine

Eelmises näites on näidatud, kuidas toru (|) abil kasutada mitut käsku. Kuid käsu asendamisel saate kasutada pesastatud käske, kus esimese käsu väljund sõltub teise käsu väljundist ja see töötab vastupidiselt käsule pipe (|).

Sisestatud käsu süntaks:

kus=''käsk1 ''käsk''

Näide#6:

Kaks käsku, ` viskas välja `ja` WHO 'kasutatakse selles näites pesastatud käsuna. Siin, ` WHO esmalt käivitatakse käsk, mis prindib kasutaja andmed sisse logitud kasutaja kohta. Väljund ` WHO 'käsk käivitatakse' viskas välja 'käsk ja väljund' viskas välja `salvestab muutuja sisse $ var . Siin on väljund ` viskas välja 'käsk sõltub väljundist' WHO `käsk.

$kus=''viskas välja''WHO''
$viskas välja $ var

Väljund:

Käsutee kasutamine

Kui teate käsu teed, saate käsu käivitada, määrates käsu asendamisel käsu tee. Järgmine näide näitab käsutee kasutamist.

Näide#7:

`whoami` käsk näitab hetkel sisselogitud kasutaja kasutajanime. Vaikimisi on see käsk salvestatud / usr/ olen/ kausta. Käivitamiseks käivitage järgmine skript oi ' käsk, kasutades teed ja salvestada muutuja, $ väljund, ja printige väärtus $ väljund .

$väljund= $(/usr/olen/kes ma olen)
$viskas välja $ väljund

Väljund:

Käsurea argumendi kasutamine

Käsurea argumenti saab käsuga kasutada käsu asendamise argumendina.

Näide#8:

Looge bash -fail nimega cmdsub3.sh järgmise skriptiga. ` põhinimi `käsku kasutatakse siin failinime toomiseks 2 -stndkäsurea argument ja salvestatakse muutujale, $ failinimi . Me teame 1stkäsurea argument on käivitava skripti nimi, mida tähistatakse $ 0 -ga.

#!/bin/bash
faili nimi=''põhinimi $ 1''
viskas välja 'Faili nimi on$ failinimi. '

Käivitage skript järgmise argumendiväärtusega.

$löömacmdsub3.sh Töölaud/temp/tere.txt

Siin, põhinimi teelt, Desktop/temp/hello.txt on ' tere.txt ’. Niisiis, väärtus $ failinimi saab tere.txt .

Väljund:

Järeldus:

Selles õpetuses on näidatud käsuasenduste erinevaid kasutusviise. Kui teil on vaja töötada mitme käsu või sõltuva käsuga ja salvestada tulemus ajutiseks, et hiljem mõnda muud ülesannet täita, saate väljundi saamiseks seda funktsiooni oma skriptis kasutada.

Rohkem infot videos: