Bash subshells

Bash Subshells



Kartais reikia paleisti vieną ar daugiau komandų ar scenarijų fone. Šią užduotį galima atlikti įrašant visas komandas arba scenarijus į scenarijaus failą ir vykdant failą naudojant ampersandą (&) arba vykdant komandas ar scenarijus į subshell iš dabartinio apvalkalo. Subshell gali būti naudojamas kelioms komandoms ar scenarijams vykdyti, įtraukiant $() arba backticks (`). Bash subshell naudojimo metodai parodyti šioje pamokoje.

Įvairūs subshell pavyzdžiai

Šioje pamokos dalyje parodyti skirtingi scenarijaus vykdymo poapkele būdai.

1 pavyzdys: Vykdykite subshell, naudodami vieną ir dvigubą citatą

Sukurkite Bash failą su šiuo scenarijumi, kuris išspausdina dabartinę datą ir laiką. Tada $strVal kintamasis išspausdinamas įtraukiant subshell scenarijų į vienvietes ir dvigubas kabutes.







#!/bin/bash

#Spausdinkite komandą „data“ antriniame apvalkale

aidas 'Šiandien yra 'data'.

#Apibrėžkite eilutės kintamąjį

strVal = „Bash Subshell“

#Spausdinkite kintamąjį posluoksnyje naudodami atskiras kabutes

aidas 'Pavienių kabučių išvestis:' '$(echo $strVal)'

#Spausdinkite kintamąjį posluoksnyje naudodami dvigubas kabutes

aidas 'Dvigubų kabučių išvestis:' $(echo $strVal)

Įvykdžius scenarijų pasirodo ši išvestis. Subshell scenarijus spausdinamas kaip eilutė, kai jis yra su atskiromis kabutėmis. Subshell scenarijus vykdomas, kai jis yra su dvigubomis kabutėmis:





2 pavyzdys: Ieškokite visų konkretaus plėtinio failų naudodami subshell

Sukurkite „Bash“ failą naudodami šį scenarijų, kuris naudoja failo plėtinį kaip vartotojo įvestį. Tada komanda „ls“ vykdoma subshell, kad būtų galima ieškoti visų to konkretaus plėtinio failų.





#!/bin/bash

aidas -n 'Įveskite failo plėtinio pavadinimą:'

#Paimkite failo plėtinio pavadinimą, kurio bus ieškoma

skaityti ext

#Patikrinkite įvesties vertę

jeigu [ [ $ext == '' ] ] ; tada

#Spausdinti klaidos pranešimą

aidas „Pratęsimas nesuteikiamas“.

Kitas

aidas „Failų pavadinimai su $ext plėtinys:'

#Spausdinkite visus failų pavadinimus su nurodytu plėtiniu

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

būti

Vykdant scenarijų su „txt“ įvestimi pasirodo ši išvestis. Pagal išvestį dabartinėje vietoje yra trys tekstiniai failai:



Įvykdžius scenarijų su tuščia reikšme pasirodo ši išvestis:

3 pavyzdys: Vykdykite aritmetinę išraišką subshell

Sukurkite „Bash“ failą su šiuo scenarijumi, kuriame to paties pavadinimo kintamasis naudojamas pagrindiniame apvalkale ir posluoksnyje. Aritmetinis veiksmas apibrėžiamas pagrindiniame apvalkale ir antriniame apvalkale.

#!/bin/bash

#Apibrėžkite pirminį apvalkalo kintamąjį

numerį = 10

#Spausdinkite rezultatą pagal pirminio apvalkalo kintamąjį

( ( rezultatas = $numeris + 5 ) )

aidas 'Suma $numeris +5= $ rezultatas

#Sukurkite subshell kintamąjį tuo pačiu pirminio apvalkalo pavadinimu

( numerį = dvidešimt ; ( ( rezultatas = $numeris + 10 ) ) ; aidas 'Suma $numeris +5= $ rezultatas )

#Iš naujo išspausdinkite rezultatą pagal pirminio apvalkalo kintamąjį

aidas 'Suma $ numeris +5= $ rezultatas

Įvykdžius scenarijų pasirodo ši išvestis. Pirmasis ir paskutinis išvestis rodo pagrindinio apvalkalo rezultatą. Antroji išvestis rodo subshell rezultatą. Pagrindinio apvalkalo kintamasis nėra modifikuojamas subshell kintamojo:

4 pavyzdys: Vykdykite kelias komandas subshell

Sukurkite „Bash“ failą su šiuo scenarijumi, kuris siunčia komandos „echo“ išvestį į komandą „sed“, kuri atitinkančią eilutės reikšmę pakeičia kita eilute. Komandos „echo“ išvestis yra „JavaScript“. Taigi, ši reikšmė lyginama su „Java“ ir „JavaScript“. Jei randama atitiktis, atitinkančios eilutės pakeičiamos eilute „Tipas“.

#!/bin/bash

#Apibrėžkite eilutės reikšmę

strVal = 'JavaScript'

#Atspausdinkite pradinę eilutės reikšmę

aidas 'Eilutės reikšmė: $strVal

#Spausdinkite subshell reikšmę

aidas -n 'Subshell reikšmė: '

aidas $(echo $strVal | sed 's|Java|JavaScript Type|')

Vykdžius scenarijų pasirodo ši išvestis. Pagal išvestį „Java“ eilutė pakeičiama eilute „Tipas“. Subshell išvestis yra „JavaScript TypeScript“:


Išvada

Viena ar daugiau komandų ar scenarijų gali būti vykdomos naudojant subshell, nepažeidžiant pagrindinio apvalkalo. Šiame vadove, naudojant kelis pavyzdžius, paaiškinami posluoksnio naudojimo tikslai. Įvairių tipų užduotys, tokios kaip failų paieška, skaičių sumos apskaičiavimas, eilučių keitimas ir kt., pateiktuose pavyzdžiuose atliekamos pagal subshell. Subshell naudojimo koncepcija yra tinkamai parodyta, o nauji Bash vartotojai dabar galės naudoti subshell, perskaitę šią mokymo programą.