Bash Subshells

Bash Subshells



Uneori, este nevoie să rulați una sau mai multe comenzi sau scripturi în fundal. Această sarcină poate fi realizată prin scrierea tuturor comenzilor sau scripturilor într-un fișier script și executând fișierul utilizând ampersand (&) sau executând comenzile sau scripturile în subshell din shell-ul curent. Subshell-ul poate fi folosit pentru a executa mai multe comenzi sau scripturi prin anexarea cu $() sau backtick-urile (`). Metodele de utilizare a subshell-ului Bash sunt prezentate în acest tutorial.

Diferite exemple de subshell

Diferitele moduri de executare a scriptului în subshell sunt prezentate în această parte a tutorialului.

Exemplul 1: Executați subshell-ul folosind ghilimele simple și ghilimele duble

Creați un fișier Bash cu următorul script care imprimă data și ora curente. Apoi, variabila $strVal este tipărită prin includerea scriptului subshell între ghilimele simple și ghilimele duble.







#!/bin/bash

#Tipărește comanda `date` în subshell

ecou 'Azi e `data` '

#Definește o variabilă șir

strVal = „Bash Subshell”

#Tipărește variabila în subshell folosind ghilimele simple

ecou „Ieșirea ghilimelelor simple:” „$(echo $strVal)”

#Tipărește variabila în subshell folosind ghilimele duble

ecou „Ieșirea ghilimelelor duble:” ' $(echo $strVal) '

Următoarea ieșire apare după executarea scriptului. Scriptul subshell este tipărit ca șir atunci când este inclus cu ghilimele simple. Scriptul subshell este executat atunci când este inclus cu ghilimele duble:





Exemplul 2: Căutați în toate fișierele unei anumite extensii folosind subshell

Creați un fișier Bash cu următorul script care ia extensia fișierului ca intrare de la utilizator. Apoi, comanda „ls” este executată în subshell pentru a căuta toate fișierele cu acea extensie anume.





#!/bin/bash

ecou -n „Introduceți numele extensiei fișierului:”

#Ia numele extensiei de fișier care va fi căutat

citit ext

#Verificați valoarea de intrare

dacă [ [ $ext == '' ] ] ; apoi

#Print mesaj de eroare

ecou „Nu se acordă prelungire”.

altfel

ecou „Nume de fișiere cu $ext extensie:'

#Tipărește toate numele fișierelor cu extensia dată

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

fi

Următoarea ieșire apare după executarea scriptului cu intrarea „txt”. Conform rezultatelor, trei fișiere text există în locația curentă:



Următoarea ieșire apare după executarea scriptului cu valoarea goală:

Exemplul 3: Executați expresia aritmetică în subshell

Creați un fișier Bash cu următorul script în care variabila cu același nume este utilizată în shell-ul principal și subshell. Operația aritmetică este definită în shell-ul principal și subshell.

#!/bin/bash

#Definește o variabilă shell părinte

număr = 10

#Tipărește rezultatul pe baza variabilei shell-ului părinte

( ( rezultat = $numar + 5 ) )

ecou 'Suma $numar +5= $rezultat '

#Creați o variabilă subshell cu același nume cu shell-ul părinte

( număr = douăzeci ; ( ( rezultat = $numar + 10 ) ) ; ecou 'Suma $numar +5= $rezultat ' )

#Imprimați din nou rezultatul pe baza variabilei shell-ului părinte

ecou 'Suma $numar +5= $rezultat '

Următoarea ieșire apare după executarea scriptului. Prima și ultima ieșire arată rezultatul shell-ului principal. A doua ieșire arată rezultatul subshell-ului. Variabila shell-ului principal nu este modificată de variabila subshell-ului:

Exemplul 4: Executați mai multe comenzi în subshell

Creați un fișier Bash cu următorul script care trimite rezultatul comenzii „echo” în comanda „sed” care înlocuiește valoarea șirului potrivit cu un alt șir. Ieșirea comenzii „echo” este „JavaScript”. Deci, această valoare este comparată cu „Java” și „JavaScript”. Dacă se găsește o potrivire, șirurile care se potrivesc sunt înlocuite cu șirul „Tip”.

#!/bin/bash

#Definește o valoare șir

strVal = „JavaScript”

#Tipărește valoarea șirului original

ecou „Valoare șir: $strVal '

#Tipărește valoarea subshell

ecou -n „Valoare subshell:”

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

Următoarea ieșire apare după executarea scriptului. Conform rezultatelor, șirul „Java” este înlocuit cu șirul „Type”. Ieșirea subshell-ului este „JavaScript TypeScript”:


Concluzie

Una sau mai multe comenzi sau scripturi pot fi executate folosind subshell-ul fără a afecta shell-ul principal. Scopurile utilizării subshell-ului sunt explicate în acest tutorial folosind mai multe exemple. Diferite tipuri de sarcini, cum ar fi căutarea fișierelor, calcularea sumei numerelor, înlocuirea șirurilor de caractere etc. sunt realizate de subshell în exemplele date. Conceptul de utilizare a subshell-ului este demonstrat în mod corespunzător, iar noii utilizatori Bash vor putea acum să folosească subshell-ul după ce au citit acest tutorial.