BASH command output sa variable

Bash Command Output Variable



Ang iba't ibang mga uri ng mga bash na utos ay kailangang patakbuhin mula sa terminal batay sa mga kinakailangan ng gumagamit. Kapag nagpapatakbo ang gumagamit ng anumang utos mula sa terminal pagkatapos ay ipinapakita nito ang output kung walang error na mayroon kung hindi man ay ipinapakita nito ang mensahe ng error. Minsan, ang output ng utos ay kailangang maiimbak sa isang variable para magamit sa hinaharap. Ang tampok na pagpapalit ng utos ng shell ng bash ay maaaring gamitin para sa hangaring ito. Kung paano mo maiimbak ang iba't ibang mga uri ng mga command ng shell sa variable gamit ang tampok na ito ay ipinapakita sa tutorial na ito.

variable= $(utos)
variable= $(utos [pagpipilian ...]argument1 argumento2 ...)
variable= $(/landas/sa/utos)

O kaya







variable='utos'
variable='utos [pagpipilian ...]argument1 argumento2 ...'
variable=`/landas/sa/utos'

*** Tandaan: Huwag gumamit ng anumang puwang bago at pagkatapos ng pantay na pag-sign kapag ginagamit ang mga utos sa itaas.



Single output output sa isang variable

Maaaring gamitin ang mga utos na bash nang walang anumang pagpipilian at argument para sa mga utos na iyon kung saan ang mga bahagi ay opsyonal. Ang sumusunod na dalawang halimbawa ay nagpapakita ng paggamit ng simpleng pagpapalit ng utos.



Halimbawa # 1:

bash ` petsa` ginagamit ang utos upang maipakita ang kasalukuyang petsa at oras. Ang sumusunod na script ay mag-iimbak ng output ng ` petsa` utos sa $ kasalukuyang_date variable sa pamamagitan ng paggamit ng pagpapalit ng utos.





$kasalukuyang_date= $(petsa)
$itinapon 'Ngayon ay$ kasalukuyang_date'

Output:



Halimbawa # 2:

`pwd` Ipinapakita ng utos ang landas ng kasalukuyang gumaganang direktoryo. Ang sumusunod na script ay nag-iimbak ng output ng `pwd` utos sa variable, $ current_dir at ang halaga ng variable na ito ay nakalimbag sa pamamagitan ng paggamit `echo` utos

$kasalukuyang_dir='pwd'
$itinapon 'Ang kasalukuyang direktoryo ay:$ current_dir'

Output:

Mag-utos na may pagpipilian at argumento

Ang pagpipilian at argumento ay sapilitan para sa ilang mga bash na utos. Ipinapakita ng mga sumusunod na halimbawa kung paano mo maiimbak ang output ng utos na may pagpipilian at argument sa isang variable.

Halimbawa # 3:

Bash ` wc ginagamit ang utos upang mabilang ang kabuuang bilang ng mga linya, salita, at character ng anumang file. Ang utos na ito ay gumagamit ng -c, -w at -l bilang pagpipilian at filename bilang pagtatalo upang makabuo ng output. Lumikha ng isang text file na pinangalanan prutas.txt kasama ang sumusunod na data upang subukan ang susunod na script.
prutas.txt

prutas.txt
Mangga
Kahel
Saging
Ubas
Bayabas
Apple

Patakbuhin ang mga sumusunod na utos upang mabilang at maiimbak ang kabuuang bilang ng mga salita sa prutas.txt file sa isang variable, $ count_words at i-print ang halaga sa pamamagitan ng paggamit ng ` echo` utos

$count_words='wc -saprutas.txt'
$itinapon 'Kabuuang mga salita sa mga prutas.txt ay$ count_words'

Output:

Halimbawa # 4:

`hiwa` ay isa pang bash command na gumagamit ng pagpipilian at argument upang makabuo ng output. Lumikha ng isang text file na pinangalanan araw ng linggo.txt na may pitong linggong mga pangalan upang patakbuhin ang susunod na script.

araw ng linggo.txt

Lunes
Martes
Miyerkules
Huwebes
Biyernes
Sabado
Linggo

Lumikha ng isang bash file na pinangalanan cmdsub1.sh kasama ang sumusunod na iskrip. Sa script na ito, habang ginagamit ang loop upang mabasa ang nilalaman ng araw ng linggo.txt linya ng file sa pamamagitan ng linya at basahin ang unang tatlong mga character ng bawat linya sa pamamagitan ng paggamit ng ` putulin` utos Pagkatapos ng paggupit, ang halaga ng string ay nakaimbak sa variable $ araw . Susunod, Kung ginamit ang pahayag upang suriin ang halaga ng $ araw ay ‘ Sun ' o hindi. Ipi-print ng output ‘ Linggo ang piyesta opisyal 'Kailan kung ang kondisyon ay totoo kung hindi man ay mai-print ang halaga ng $ araw .

cmdsub1.sh

#! / baseng / bash
filename='weekday.txt'
habang basahinlinya;gawin
araw='itinapon $ linya | putol -c 1-3'
kung [ $ araw=='Araw' ]
tapos
itinapon 'Linggo ang piyesta opisyal'
iba pa
itinapon $ araw
maging
tapos na<$ filename

Patakbuhin ang iskrip.

$pusaaraw ng linggo.txt
$bashcmdsub1.sh

Output:

Paggamit ng pagpapalit ng utos sa loop

Maaari mong iimbak ang output ng pagpapalit ng utos sa anumang variable ng loop na ipinakita sa susunod na halimbawa.

Halimbawa # 5:

Lumikha ng isang file na pinangalanan cmdsub2.sh kasama ang sumusunod na code. Dito, ` ls -d * / Ginamit ang `utos upang makuha ang lahat ng listahan ng direktoryo mula sa kasalukuyang direktoryo. Para sa loop ay ginagamit dito upang basahin ang bawat direktoryo mula sa output at iimbak ito sa variable $ dirname na naka-print mamaya.

cmdsub2.sh

#! / baseng / bash
para sa dirname sa$(ls -d * /)
gawin
itinapon '$ dirname'
tapos na

Patakbuhin ang iskrip.

$bashcmdsub2.sh

Output:

Paggamit ng mga naka-punong utos

Kung paano mo magagamit ang maraming mga utos gamit ang tubo (|) ay ipinakita sa nakaraang halimbawa. Ngunit maaari mong gamitin ang mga naka-salubong na utos sa pagpapalit ng utos kung saan ang output ng unang utos ay nakasalalay sa output ng pangalawang utos at gumagana ito sa tapat ng tubo (|) na utos.

Nests ng utos na syntax:

kung saan='utos1 'utos'

Halimbawa # 6:

Dalawang utos, ` itinapon `at` sino ginagamit ang `sa halimbawang ito bilang naka-salang utos. Dito, ` sino ipapatupad muna ang `utos na mag-print ng impormasyon ng gumagamit ng kasalukuyang naka-log in na gumagamit. Ang output ng ` sino ang `utos ay isasagawa ng` itinapon `utos at ang output ng` itinapon ay iimbak sa variable $ var . Dito, ang output ng ` itinapon Ang `utos ay nakasalalay sa output ng` sino `utos.

$kung saan='itinapon'sino'
$itinapon $ var

Output:

Paggamit ng Command path

Kung alam mo ang landas ng utos pagkatapos ay maaari mong patakbuhin ang utos sa pamamagitan ng pagtukoy sa path ng utos kapag gumagamit ng pagpapalit ng utos. Ipinapakita ng sumusunod na halimbawa ang paggamit ng command path.

Halimbawa # 7:

`whoami` Ipinapakita ng utos ang username ng kasalukuyang naka-log in na gumagamit. Bilang default, ang utos na ito ay nakaimbak sa / usr / am / folder. Patakbuhin ang sumusunod na script upang patakbuhin ang ` whoami` utos gamit ang path at store sa variable, $ output, at i-print ang halaga ng $ output .

$output= $(/usr/am/sino ako)
$itinapon $ output

Output:

Gamit ang argument ng Command Line

Maaari mong gamitin ang argument ng linya ng utos kasama ang utos bilang argument sa pagpapalit ng utos.

Halimbawa # 8:

Lumikha ng isang bash file na pinangalanan cmdsub3.sh kasama ang sumusunod na iskrip. ` basename Ginagamit ang `utos dito upang makuha ang filename mula sa 2ndutos ng linya ng utos at nakaimbak sa variable, $ filename . Alam natin ang 1stAng argument ng linya ng utos ay ang pangalan ng script ng pagpapatupad na naipahiwatig ng $ 0.

#! / baseng / bash
filename='basename $ 1'
itinapon 'Ang pangalan ng file ay$ filename. '

Patakbuhin ang script gamit ang sumusunod na halaga ng argument.

$bashcmdsub3.sh Desktop/temp/hello.txt

Dito, ang basename ng landas, Desktop / temp / hello.txt ay ‘ hello.txt ’. Kaya, ang halaga ng $ filename magiging hello.txt .

Output:

Konklusyon:

Ang iba't ibang mga paggamit ng mga pamalit na utos ay ipinapakita sa tutorial na ito. Kung kailangan mong gumana sa maraming mga utos o nakasalalay na mga utos at iimbak ang resulta pansamantala upang gawin ang ilang iba pang mga gawain sa paglaon maaari mong gamitin ang tampok na ito sa iyong script upang makuha ang output.

Higit pang impormasyon sa video: