Bash Subshells

Bash Subshells



Minsan, kailangan mong magpatakbo ng isa o higit pang mga command o script sa background. Ang gawaing ito ay maaaring gawin sa pamamagitan ng pagsusulat ng lahat ng command o script sa isang script file at pag-execute ng file gamit ang ampersand (&) o pag-execute ng mga command o script sa subshell mula sa kasalukuyang shell. Maaaring gamitin ang subshell upang magsagawa ng maraming command o script sa pamamagitan ng paglalagay ng $() o ang mga backtick (`). Ang mga paraan ng paggamit ng Bash subshell ay ipinapakita sa tutorial na ito.

Iba't ibang Halimbawa ng Subshell

Ang iba't ibang paraan ng pagsasagawa ng script sa subshell ay ipinapakita sa bahaging ito ng tutorial.

Halimbawa 1: Ipatupad ang Subshell Gamit ang Single Quote at Double Quote

Gumawa ng Bash file na may sumusunod na script na nagpi-print ng kasalukuyang petsa at oras. Susunod, ang variable na $strVal ay naka-print sa pamamagitan ng paglalagay ng subshell na script sa loob ng mga solong panipi at mga dobleng panipi.







#!/bin/bash

#Print ang command na `date` sa subshell

echo 'Ngayon ay `petsa` '

#Tumukoy ng string variable

strVal = 'Bash Subshell'

#Print ang variable sa subshell gamit ang mga single quotes

echo 'Ang output ng mga single quotes:' '$(echo $strVal)'

#Print ang variable sa subshell gamit ang double quotes

echo 'Ang output ng double quotes:' ' $(echo $strVal) '

Ang sumusunod na output ay lilitaw pagkatapos isagawa ang script. Ang subshell script ay naka-print bilang isang string kapag ito ay nakapaloob sa mga solong quote. Ang subshell script ay isinasagawa kapag ito ay nakapaloob sa double quotes:





Halimbawa 2: Hanapin ang Lahat ng File ng Partikular na Extension Gamit ang Subshell

Gumawa ng Bash file na may sumusunod na script na kumukuha ng extension ng file bilang input mula sa user. Susunod, ang command na 'ls' ay isinasagawa sa subshell upang hanapin ang lahat ng mga file ng partikular na extension na iyon.





#!/bin/bash

echo -n 'Ipasok ang pangalan ng extension ng file:'

#Kunin ang pangalan ng file extension na hahanapin

basahin ext

#Suriin ang halaga ng input

kung [ [ $ext == '' ] ] ; pagkatapos

#Mag-print ng mensahe ng error

echo 'Walang ibinigay na extension.'

iba pa

echo 'Mga filename na may $ext extension:'

#Print lahat ng filename na may ibinigay na extension

echo ' $( echo `ls *.$ext` ) '

maging

Ang sumusunod na output ay lilitaw pagkatapos isagawa ang script gamit ang 'txt' input. Ayon sa output, tatlong text file ang umiiral sa kasalukuyang lokasyon:



Lumilitaw ang sumusunod na output pagkatapos isagawa ang script na may walang laman na halaga:

Halimbawa 3: Ipatupad ang Arithmetic Expression sa Subshell

Gumawa ng Bash file na may sumusunod na script kung saan ginagamit ang variable ng parehong pangalan sa pangunahing shell at subshell. Ang operasyon ng arithmetic ay tinukoy sa pangunahing shell at subshell.

#!/bin/bash

#Tumukoy ng parent shell variable

numero = 10

#I-print ang resulta batay sa variable ng parent shell

( ( resulta = $number + 5 ) )

echo 'Ang kabuuan ng $number +5= $resulta '

#Gumawa ng subshell variable na may parehong pangalan ng parent shell

( numero = dalawampu ; ( ( resulta = $number + 10 ) ) ; echo 'Ang kabuuan ng $number +5= $resulta ' )

#I-print muli ang resulta batay sa variable ng parent shell

echo 'Ang kabuuan ng $number +5= $resulta '

Ang sumusunod na output ay lilitaw pagkatapos isagawa ang script. Ang una at huling mga output ay nagpapakita ng resulta ng pangunahing shell. Ang pangalawang output ay nagpapakita ng resulta ng subshell. Ang variable ng pangunahing shell ay hindi binago ng variable ng subshell:

Halimbawa 4: Magsagawa ng Maramihang Mga Utos sa Subshell

Gumawa ng Bash file na may sumusunod na script na nagpapadala ng output ng command na 'echo' sa command na 'sed' na pumapalit sa katugmang string value ng isa pang string. Ang output ng 'echo' na utos ay 'JavaScript'. Kaya, ang halagang ito ay inihambing sa 'Java' at 'JavaScript'. Kung may nakitang tugma, ang mga katugmang string ay papalitan ng 'Uri' na string.

#!/bin/bash

#Tumukoy ng halaga ng string

strVal = 'JavaScript'

#I-print ang orihinal na halaga ng string

echo 'Halaga ng string: $strVal '

#I-print ang halaga ng subshell

echo -n 'Halaga ng subshell: '

echo ' $(echo $strVal | sed 's|Java|Uri ng JavaScript|') '

Ang sumusunod na output ay lilitaw pagkatapos isagawa ang script. Ayon sa output, ang 'Java' string ay pinalitan ng 'Uri' na string. Ang output ng subshell ay 'JavaScript TypeScript':


Konklusyon

Ang isa o higit pang mga command o script ay maaaring isagawa gamit ang subshell nang hindi naaapektuhan ang pangunahing shell. Ang mga layunin ng paggamit ng subshell ay ipinaliwanag sa tutorial na ito gamit ang maraming halimbawa. Ang iba't ibang uri ng mga gawain tulad ng paghahanap sa mga file, pagkalkula ng kabuuan ng mga numero, pagpapalit ng mga string, atbp. ay ginagawa ng subshell sa mga ibinigay na halimbawa. Ang konsepto ng paggamit ng subshell ay maayos na ipinakita at ang mga bagong Bash user ay magagamit na ngayon ang subshell pagkatapos basahin ang tutorial na ito.