BASH komandu izvade mainīgajam

Bash Command Output Variable



Pamatojoties uz lietotāja prasībām, no termināļa ir jāizpilda dažāda veida bash komandas. Kad lietotājs izpilda jebkuru komandu no termināļa, tas parāda izvadi, ja nav kļūdu, pretējā gadījumā tiek parādīts kļūdas ziņojums. Dažreiz komandas izvade ir jāglabā mainīgā, lai to varētu izmantot nākotnē. Šim nolūkam var izmantot bash Shell komandu aizstāšanas funkciju. Šajā apmācībā ir parādīts, kā mainīgajā var saglabāt dažāda veida čaulas komandas, izmantojot šo līdzekli.

mainīgais= $(komandu)
mainīgais= $(komandu [variants…]arguments1 argumenti2…)
mainīgais= $(/ceļš/uz/komandu)

VAI







mainīgais=``komandu``
mainīgais=``komandu [variants…]arguments1 argumenti2…``
mainīgais=`/ceļš/uz/komandu``

*** Piezīme. Lietojot iepriekš minētās komandas, neizmantojiet atstarpi pirms un pēc vienādības zīmes.



Vienas komandas izvade mainīgajam

Bash komandas var izmantot bez jebkādām opcijām un argumentiem tām komandām, kurās šīs daļas nav obligātas. Šie divi piemēri parāda vienkāršas komandu aizstāšanas iespējas.



1. piemērs:

bash ` datums ' komandu izmanto, lai parādītu pašreizējo datumu un laiku. Šis skripts saglabās izvadi no ' datums ' komandu $ Šodienas datums mainīgais, izmantojot komandu aizstāšanu.





$Šodienas datums= $(datums)
$izmest ārā 'Šodien ir$ current_date'

Izeja:



2. piemērs:

`pwd` komanda parāda pašreizējā darba direktorija ceļu. Šis skripts saglabā izvadi no `pwd` komandu mainīgajā, $ current_dir un šī mainīgā vērtība tiek drukāta, izmantojot 'atbalss' komandu.

$pašreizējais_dir=``pwd``
$izmest ārā 'Pašreizējais direktorijs ir šāds:$ current_dir'

Izeja:

Komanda ar opciju un argumentu

Opcija un arguments ir obligāti dažām bash komandām. Šie piemēri parāda, kā komandas izvadi ar opciju un argumentu var saglabāt mainīgajā.

3. piemērs:

Bash ` tualete komandu izmanto, lai saskaitītu jebkura faila kopējo rindu, vārdu un rakstzīmju skaitu. Šī komanda izmanto -c, -w un -l kā opciju un faila nosaukumu kā argumentu, lai ģenerētu izvadi. Izveidojiet teksta failu ar nosaukumu augļi.txt ar šādiem datiem, lai pārbaudītu nākamo skriptu.
augļi.txt

augļi.txt
Mango
apelsīns
Banāns
Vīnogu
Gvajava
Apple

Izpildiet šādas komandas, lai saskaitītu un saglabātu kopējo vārdu skaitu augļi.txt failu mainīgā, $ count_words un izdrukājiet vērtību, izmantojot ' atbalss ` komandu.

$count_words=``tualete -iekšāaugļi.txt``
$izmest ārā 'Kopā vārdi augļos.txt ir$ count_words'

Izeja:

4. piemērs:

`sagriezt` ir vēl viena bash komanda, kas izejas ģenerēšanai izmanto opciju un argumentu. Izveidojiet teksta failu ar nosaukumu weekday.txt ar septiņu darba dienu nosaukumiem, lai palaistu nākamo skriptu.

weekday.txt

Pirmdiena
Otrdiena
Trešdiena
Ceturtdiena
Piektdiena
Sestdiena
Svētdiena

Izveidojiet bash failu ar nosaukumu cmdsub1.sh ar šādu skriptu. Šajā skriptā kamēr cilpa tiek izmantota satura lasīšanai weekday.txt failu pa rindām un izlasiet katras rindas pirmās trīs rakstzīmes, izmantojot ' izgriezt` komandu. Pēc griešanas virknes vērtība tiek saglabāta mainīgajā $ diena . Tālāk, ja paziņojums tiek izmantots, lai pārbaudītu vērtību $ diena ir ' Saule ' vai nē. Izeja tiks drukāta ' Svētdiena ir brīvdiena “Kad nosacījums ir patiess, pretējā gadījumā tiks izdrukāta vērtība $ diena .

cmdsub1.sh

#!/bin/bash
faila nosaukums='weekday.txt'
kamēr lasītlīnija;darīt
diena=``izmest ārā $ līnija | griezt -c 1-3``
ja [ $ diena=='Saule' ]
tad
izmest ārā 'Svētdiena ir brīvdiena'
citādi
izmest ārā $ diena
būt
darīts<$ faila nosaukums

Palaidiet skriptu.

$kaķisweekday.txt
$bashcmdsub1.sh

Izeja:

Komandu aizstāšanas izmantošana cilpā

Komandu aizstāšanas izvadi var saglabāt jebkurā cilpas mainīgajā, kas parādīts nākamajā piemērā.

5. piemērs:

Izveidojiet failu ar nosaukumu cmdsub2.sh ar šādu kodu. Lūk, ` ls -d * / komandu izmanto, lai izgūtu visu direktoriju sarakstu no pašreizējā direktorija. Šeit tiek izmantota cilpa, lai nolasītu katru direktoriju no izvades un saglabātu to mainīgajā $ dirname kas tiek izdrukāts vēlāk.

cmdsub2.sh

#!/bin/bash
priekš dirname iekšā$(ls -d * /)
darīt
izmest ārā '$ dirname'
darīts

Palaidiet skriptu.

$bashcmdsub2.sh

Izeja:

Izmantojot ligzdotas komandas

Kā jūs varat izmantot vairākas komandas, izmantojot cauruli (|), ir parādīts iepriekšējā piemērā. Bet komandu aizstāšanā varat izmantot ligzdotas komandas, kur pirmās komandas izlaide ir atkarīga no otrās komandas izvades un tā darbojas pretēji komandai pipe (|).

Ligzdoto komandu sintakse:

kur=``komanda1 ``komandu``

6. piemērs:

Divas komandas, ` izmest ārā 'un' PVO `tiek izmantoti šajā piemērā kā ligzdota komanda. Lūk, ` PVO komanda vispirms tiks izpildīta, lai izdrukātu lietotāja informāciju par pašlaik pieteicies lietotāju. Rezultāts ` PVO komandu izpildīs ' izmest ārā 'komandu un' izvadi izmest ārā `tiks saglabāts mainīgajā $ var . Šeit iznākums ` izmest ārā komanda ir atkarīga no izvades PVO `komanda.

$kur=``izmest ārā``PVO``
$izmest ārā $ var

Izeja:

Izmantojot komandu ceļu

Ja jūs zināt komandas ceļu, varat palaist komandu, norādot komandas ceļu, kad tiek izmantota komandu aizstāšana. Šis piemērs parāda komandu ceļa izmantošanu.

7. piemērs:

`whoami` komanda parāda pašlaik pieteicies lietotāja lietotājvārdu. Pēc noklusējuma šī komanda tiek saglabāta / usr/ esmu/ mape. Palaidiet šādu skriptu, lai palaistu ' whoami` komanda, izmantojot ceļu un saglabāšanu mainīgajā, $ izlaide, un izdrukājiet vērtību $ izlaide .

$izvade= $(/usr/esmu/kas es esmu)
$izmest ārā $ izlaide

Izeja:

Izmantojot komandrindas argumentu

Jūs varat izmantot komandrindas argumentu ar komandu kā argumentu komandu aizstāšanā.

8. piemērs:

Izveidojiet bash failu ar nosaukumu cmdsub3.sh ar šādu skriptu. ` pamatnosaukums komanda tiek izmantota, lai izgūtu faila nosaukumu no 2ndkomandrindas arguments un saglabāts mainīgajā, $ faila nosaukums . Mēs zinām 1stkomandrindas arguments ir izpildes skripta nosaukums, kas apzīmēts ar $ 0.

#!/bin/bash
faila nosaukums=``pamatnosaukums $ 1``
izmest ārā 'Faila nosaukums ir$ faila nosaukums. '

Palaidiet skriptu ar šādu argumenta vērtību.

$bashcmdsub3.sh darbvirsma/temp/hello.txt

Šeit, pamatnosaukums no ceļa, Desktop/temp/hello.txt ir ' hello.txt ’. Tātad, vērtība $ faila nosaukums būs hello.txt .

Izeja:

Secinājums:

Šajā apmācībā ir parādīti dažādi komandu aizstāšanas veidi. Ja jums ir jāstrādā ar vairākām komandām vai atkarīgām komandām un jāsaglabā rezultāts pagaidu, lai vēlāk veiktu dažus citus uzdevumus, varat izmantot šo funkciju savā skriptā, lai iegūtu rezultātu.

Vairāk informācijas video: