Bash Subshells

Bash Subshells



Noen ganger krever det at du kjører én eller flere kommandoer eller skript i bakgrunnen. Denne oppgaven kan gjøres ved å skrive alle kommandoer eller skript inn i en skriptfil og kjøre filen ved å bruke og-tegn (&) eller utføre kommandoene eller skriptene inn i underskallet fra gjeldende skall. Subshellet kan brukes til å utføre flere kommandoer eller skript ved å omslutte med $() eller backticks (`). Metodene for å bruke Bash-underskallet er vist i denne opplæringen.

Ulike eksempler på Subshell

De forskjellige måtene å utføre skriptet på i underskallet er vist i denne delen av opplæringen.

Eksempel 1: Utfør subshell ved å bruke enkelt anførselstegn og dobbelt anførselstegn

Lag en Bash-fil med følgende skript som skriver ut gjeldende dato og klokkeslett. Deretter skrives $strVal-variabelen ved å omslutte subshell-skriptet i de enkle anførselstegnene og de doble anførselstegnene.







#!/bin/bash

#Skriv ut `dato`-kommandoen i underskallet

ekko 'Idag er `dato` '

#Definer en strengvariabel

strVal = 'Bash Subshell'

#Skriv ut variabelen i underskallet med enkle anførselstegn

ekko 'Utgangen av enkle anførselstegn:' '$(echo $strVal)'

#Skriv ut variabelen i underskallet med doble anførselstegn

ekko 'Utgangen av doble anførselstegn:' ' $(echo $strVal) '

Følgende utdata vises etter utføring av skriptet. Subshell-skriptet skrives ut som en streng når det er vedlagt enkeltanførselstegn. Subshell-skriptet kjøres når det er omgitt av doble anførselstegn:





Eksempel 2: Søk i alle filer med den spesielle utvidelsen ved å bruke underskallet

Lag en Bash-fil med følgende skript som tar filtypen som et input fra brukeren. Deretter utføres 'ls'-kommandoen i underskallet for å søke i alle filene med den aktuelle utvidelsen.





#!/bin/bash

ekko -n 'Skriv inn navnet på filtypen:'

#Ta filtypen som skal søkes i

lese ext

#Sjekk inndataverdien

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

#Skriv ut feilmelding

ekko 'Ingen forlengelse er gitt.'

ellers

ekko 'Filnavn med $ext Utvidelse:'

#Skriv ut alle filnavn med gitt filtype

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

være

Følgende utgang vises etter å ha utført skriptet med 'txt'-inndata. I henhold til utdataene eksisterer tre tekstfiler på gjeldende plassering:



Følgende utdata vises etter utføring av skriptet med den tomme verdien:

Eksempel 3: Utfør det aritmetiske uttrykket i underskallet

Lag en Bash-fil med følgende skript hvor variabelen med samme navn brukes i hovedskallet og underskallet. Den aritmetiske operasjonen er definert i hovedskallet og underskallet.

#!/bin/bash

#Definer en overordnet shell-variabel

Antall = 10

#Skriv ut resultatet basert på variabelen til det overordnede skallet

( ( resultat = $nummer + 5 ) )

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

#Opprett en subshell-variabel med samme navn som det overordnede skallet

( Antall = tjue ; ( ( resultat = $nummer + 10 ) ) ; ekko 'Summen av $nummer +5= $resultat ' )

#Skriv ut resultatet basert på variabelen til det overordnede skallet igjen

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

Følgende utdata vises etter utføring av skriptet. Den første og den siste utgangen viser resultatet av hovedskallet. Den andre utgangen viser resultatet av underskallet. Variabelen til hovedskallet er ikke modifisert av variabelen til underskallet:

Eksempel 4: Utfør flere kommandoer i underskallet

Lag en Bash-fil med følgende skript som sender utdata fra 'echo'-kommandoen til 'sed'-kommandoen som erstatter den samsvarende strengverdien med en annen streng. Utdataene fra 'ekko'-kommandoen er 'JavaScript'. Så denne verdien sammenlignes med 'Java' og 'JavaScript'. Hvis et samsvar blir funnet, erstattes de samsvarende strengene med 'Type'-strengen.

#!/bin/bash

#Definer en strengverdi

strVal = 'JavaScript'

#Skriv ut den opprinnelige strengverdien

ekko 'Strengverdi: $strVal '

#Skriv ut subshell-verdien

ekko -n 'Subshell-verdi: '

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

Følgende utdata vises etter utføring av skriptet. I henhold til utdataene erstattes 'Java'-strengen med 'Type'-strengen. Utdataene fra underskallet er 'JavaScript TypeScript':


Konklusjon

En eller flere kommandoer eller skript kan utføres ved å bruke subshell uten å påvirke hovedskallet. Hensikten med å bruke subshell er forklart i denne opplæringen ved hjelp av flere eksempler. Ulike typer oppgaver som å søke i filene, beregne summen av tall, erstatte strengene osv. gjøres av subshell i de gitte eksemplene. Konseptet med å bruke subshellet er riktig demonstrert, og de nye Bash-brukerne vil nå kunne bruke subshellet etter å ha lest denne opplæringen.