Ieșirea comenzii BASH către variabilă

Bash Command Output Variable



Diferite tipuri de comenzi bash trebuie executate de la terminal în funcție de cerințele utilizatorului. Când utilizatorul execută orice comandă de la terminal, atunci afișează ieșirea dacă nu există eroare, altfel afișează mesajul de eroare. Uneori, ieșirea comenzii trebuie stocată într-o variabilă pentru utilizare viitoare. Caracteristica de substituire a comenzii Shell a bash poate fi utilizată în acest scop. Modul în care puteți stoca diferite tipuri de comenzi shell în variabilă utilizând această caracteristică este prezentat în acest tutorial.

variabil= $(comanda)
variabil= $(comanda [opțiune…]argument1 argumente2 ...)
variabil= $(/cale/la/comanda)

SAU







variabil=comanda
variabil=comanda [opțiune…]argument1 argumente2 ...
variabil=`/cale/la/comanda

*** Notă: nu utilizați niciun spațiu înainte și după semnul egal atunci când utilizați comenzile de mai sus.



Ieșire de comandă simplă către o variabilă

Comenzile Bash pot fi utilizate fără nicio opțiune și argument pentru acele comenzi în care aceste părți sunt opționale. Următoarele două exemple arată utilizările substituirii simple a comenzilor.



Exemplul nr. 1:

bash ` data` comanda este utilizată pentru a afișa data și ora curente. Următorul script va stoca ieșirea din „ data` comanda în $ data curenta variabilă utilizând substituirea comenzii.





$data curenta= $(Data)
$aruncat 'Azi e$ data_curentă'

Ieșire:



Exemplul 2:

`pwd` comanda arată calea directorului de lucru curent. Următorul script stochează rezultatul `pwd` comandă în variabilă, $ curent_dir iar valoarea acestei variabile este tipărită folosind `ecou` comanda.

$curent_dir=pwd
$aruncat „Directorul curent este:$ curent_dir'

Ieșire:

Comandă cu opțiune și argument

Opțiunea și argumentul sunt obligatorii pentru unele comenzi bash. Următoarele exemple arată cum puteți stoca ieșirea comenzii cu opțiune și argument într-o variabilă.

Exemplul nr. 3:

Bash ` toaleta comanda este utilizată pentru a număra numărul total de linii, cuvinte și caractere ale oricărui fișier. Această comandă folosește -c, -w și -l ca opțiune și nume de fișier ca argument pentru a genera ieșirea. Creați un fișier text numit fructe.txt cu următoarele date pentru a testa următorul script.
fructe.txt

fructe.txt
Mango
portocale
Banană
Struguri
Guava
măr

Rulați următoarele comenzi pentru a număra și stoca numărul total de cuvinte în fructe.txt fișier într-o variabilă, $ count_words și tipăriți valoarea folosind ` ecou` comanda.

$count_words=toaleta -înfructe.txt
$aruncat „Total cuvinte în fruits.txt este$ count_words'

Ieșire:

Exemplul # 4:

`tăiat` este o altă comandă bash care folosește opțiunea și argumentul pentru a genera ieșirea. Creați un fișier text numit weekday.txt cu nume de șapte săptămâni pentru a rula următorul script.

weekday.txt

luni
marţi
miercuri
joi
vineri
sâmbătă
duminică

Creați un fișier bash numit cmdsub1.sh cu următorul script. În acest script, in timp ce bucla este utilizată pentru a citi conținutul weekday.txt fișier rând cu rând și citiți primele trei caractere ale fiecărui rând folosind ` tăiat` comanda. După tăiere, valoarea șirului este stocată în variabilă $ zi . Apoi, dacă instrucțiunea este utilizată pentru a verifica valoarea lui $ zi este ' Soare' sau nu. Ieșirea va tipări „ Duminica este sărbătoarea ‘Când dacă condiția este adevărată altfel va imprima valoarea lui $ zi .

cmdsub1.sh

#! / bin / bash
nume de fișier=„weekday.txt”
in timp ce cititlinia;do
zi=aruncat $ linie | a tăia -c 1-3
dacă [ $ zi=='Soare' ]
atunci
aruncat „Duminica este sărbătoarea”
altceva
aruncat $ zi
fi
Terminat<$ nume de fișier

Rulați scriptul.

$pisicăweekday.txt
$bashcmdsub1.sh

Ieșire:

Utilizarea substituției comenzii în buclă

Puteți stoca ieșirea înlocuirii comenzii în orice variabilă de buclă care este prezentată în exemplul următor.

Exemplul 5:

Creați un fișier numit cmdsub2.sh cu următorul cod. Aici, ` ls -d * / Comanda `este utilizată pentru a recupera toată lista de directoare din directorul curent. Bucla For este utilizată aici pentru a citi fiecare director din ieșire și a-l stoca în variabilă $ dirname care se tipărește ulterior.

cmdsub2.sh

#! / bin / bash
pentru dirname în$(eu sunt -d * /)
do
aruncat '$ dirname'
Terminat

Rulați scriptul.

$bashcmdsub2.sh

Ieșire:

Folosind comenzi imbricate

Modul în care puteți utiliza mai multe comenzi folosind pipe (|) este prezentat în exemplul anterior. Dar puteți utiliza comenzi imbricate în înlocuirea comenzii, unde ieșirea primei comenzi depinde de ieșirea celei de-a doua comenzi și funcționează opus comenzii pipe (|).

Sintaxa comenzii imbricate:

Unde=comanda1 comanda

Exemplul nr. 6:

Două comenzi, ` aruncat `și` care `sunt folosite în acest exemplu ca comandă imbricată. Aici, ` care `va fi executată mai întâi comanda care tipărește informațiile utilizatorului utilizatorului conectat în prezent. Ieșirea fișierului ` care Comanda `va fi executată de„ aruncat comanda `și ieșirea din„ aruncat `va stoca în variabilă $ var . Aici, ieșirea din „ aruncat comanda `depinde de ieșirea din„ care `comanda.

$Unde=aruncatcare
$aruncat $ var

Ieșire:

Folosind calea de comandă

Dacă cunoașteți calea comenzii, atunci puteți rula comanda specificând calea comenzii atunci când utilizați substituirea comenzii. Următorul exemplu arată utilizarea căii de comandă.

Exemplul # 7:

`whoami` comanda arată numele de utilizator al utilizatorului conectat în prezent. În mod implicit, această comandă este stocată în / usr / a.m/ pliant. Rulați următorul script pentru a rula ` whoami` comanda folosind calea și stocarea în variabilă, $ ieșire, și tipăriți valoarea $ ieșire .

$ieșire= $(/usr/a.m/cine sunt)
$aruncat $ ieșire

Ieșire:

Folosind argumentul Liniei de comandă

Puteți utiliza argumentul liniei de comandă cu comanda ca argument în substituția comenzii.

Exemplul # 8:

Creați un fișier bash numit cmdsub3.sh cu următorul script. ` nume de bază Comanda `este folosită aici pentru a extrage numele fișierului din 2ndargumentul liniei de comandă și stocat în variabilă, $ nume de fișier . Știm 1Sfargumentul liniei de comandă este numele scriptului de executare care este notat cu 0 $.

#! / bin / bash
nume de fișier=nume de bază 1 $
aruncat 'Numele fișierului este$ nume de fișier. '

Rulați scriptul cu următoarea valoare a argumentului.

$bashcmdsub3.sh Desktop/temp/salut.txt

Aici, numele de bază calea, Desktop / temp / hello.txt este ' salut.txt '. Deci, valoarea $ nume de fișier va fi salut.txt .

Ieșire:

Concluzie:

Diverse utilizări ale substituțiilor de comandă sunt prezentate în acest tutorial. Dacă trebuie să lucrați cu mai multe comenzi sau comenzi dependente și să stocați rezultatul temporar pentru a efectua alte sarcini ulterior, puteți utiliza această caracteristică în scriptul dvs. pentru a obține rezultatul.

Mai multe informații în videoclip: