Bash Subshells

Bash Subshells



Nogle gange kræver det, at du kører en eller flere kommandoer eller scripts i baggrunden. Denne opgave kan udføres ved at skrive alle kommandoer eller scripts ind i en scriptfil og udføre filen ved at bruge og-tegn (&) eller udføre kommandoerne eller scripts i subshellen fra den aktuelle shell. Subshellen kan bruges til at udføre flere kommandoer eller scripts ved at omslutte med $() eller backticks (`). Metoderne til at bruge Bash subshell er vist i denne tutorial.

Forskellige eksempler på Subshell

De forskellige måder at udføre scriptet i subshellen er vist i denne del af selvstudiet.

Eksempel 1: Udfør subshell ved hjælp af enkelt citat og dobbelt citat

Opret en Bash-fil med følgende script, der udskriver den aktuelle dato og klokkeslæt. Dernæst udskrives $strVal-variablen ved at omslutte subshell-scriptet inden for de enkelte anførselstegn og de dobbelte anførselstegn.







#!/bin/bash

#Udskriv `dato`-kommandoen i subshellen

ekko 'Idag er 'dato' '

#Definer en strengvariabel

strVal = 'Bash Subshell'

#Udskriv variablen i subshellen med enkelte anførselstegn

ekko 'Outputtet af enkelte citater:' '$(echo $strVal)'

#Udskriv variablen i subshellen med dobbelte anførselstegn

ekko 'Udgangen af ​​dobbelte anførselstegn:' ' $(ekko $strVal) '

Følgende output vises efter eksekvering af scriptet. Subshell-scriptet udskrives som en streng, når det er omgivet af de enkelte anførselstegn. Subshell-scriptet udføres, når det er omgivet af dobbelte anførselstegn:





Eksempel 2: Søg i alle filer i den særlige udvidelse ved hjælp af subshell

Opret en Bash-fil med følgende script, der tager filtypenavnet som input fra brugeren. Dernæst udføres 'ls'-kommandoen i subshellen for at søge i alle filer i den pågældende udvidelse.





#!/bin/bash

ekko -n 'Indtast navnet på filtypenavnet:'

#Tag filtypenavnet, der vil blive søgt efter

Læs ext

#Tjek inputværdien

hvis [ [ $ext == '' ] ] ; derefter

#Udskriv fejlmeddelelse

ekko 'Der gives ingen forlængelse.'

andet

ekko 'Filnavne med $ext udvidelse:'

#Udskriv alle filnavne med den givne udvidelse

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

være

Følgende output vises efter eksekvering af scriptet med 'txt'-input. Ifølge outputtet findes der tre tekstfiler på den aktuelle placering:



Følgende output vises efter eksekvering af scriptet med den tomme værdi:

Eksempel 3: Udfør det aritmetiske udtryk i underskallen

Opret en Bash-fil med følgende script, hvor variablen af ​​samme navn bruges i hovedskallen og underskallen. Den aritmetiske operation er defineret i hovedskallen og subskallen.

#!/bin/bash

#Definer en overordnet shell-variabel

nummer = 10

#Udskriv resultatet baseret på variablen i den overordnede shell

( ( resultat = $nummer + 5 ) )

ekko 'Summen af $nummer +5= $resultat '

#Opret en subshell-variabel med samme navn som den overordnede shell

( nummer = tyve ; ( ( resultat = $nummer + 10 ) ) ; ekko 'Summen af $nummer +5= $resultat ' )

#Udskriv resultatet baseret på variablen i den overordnede shell igen

ekko 'Summen af $nummer +5= $resultat '

Følgende output vises efter eksekvering af scriptet. Den første og den sidste udgang viser resultatet af hovedskallen. Det andet output viser resultatet af subshellen. Variablen for hovedskallen modificeres ikke af variabelen for underskallen:

Eksempel 4: Udfør flere kommandoer i underskallen

Opret en Bash-fil med følgende script, der sender outputtet af 'echo'-kommandoen til 'sed'-kommandoen, der erstatter den matchende strengværdi med en anden streng. Outputtet af 'ekko'-kommandoen er 'JavaScript'. Så denne værdi sammenlignes med 'Java' og 'JavaScript'. Hvis der findes et match, erstattes de matchende strenge med 'Type'-strengen.

#!/bin/bash

#Definer en strengværdi

strVal = 'JavaScript'

#Udskriv den oprindelige strengværdi

ekko 'Stringværdi: $strVal '

#Udskriv subshell-værdien

ekko -n 'Subshell værdi: '

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

Følgende output vises efter eksekvering af scriptet. Ifølge outputtet erstattes 'Java'-strengen med 'Type'-strengen. Outputtet af subshellen er 'JavaScript TypeScript':


Konklusion

En eller flere kommandoer eller scripts kan udføres ved hjælp af subshellen uden at påvirke hovedskallen. Formålet med at bruge subshellen er forklaret i denne tutorial ved hjælp af flere eksempler. Forskellige typer opgaver såsom at søge i filerne, beregne summen af ​​tal, udskifte strengene osv. udføres af subshellen i de givne eksempler. Konceptet med at bruge subshellen er korrekt demonstreret, og de nye Bash-brugere vil nu være i stand til at bruge subshellen efter at have læst denne tutorial.