Bash Subshells

Bash Subshells



Ibland kräver det att du kör ett eller flera kommandon eller skript i bakgrunden. Den här uppgiften kan göras genom att skriva alla kommandon eller skript till en skriptfil och köra filen med et-tecken (&) eller köra kommandona eller skripten i underskalet från det aktuella skalet. Underskalet kan användas för att köra flera kommandon eller skript genom att omsluta med $() eller backticks (`). Metoderna för att använda Bash-underskalet visas i denna handledning.

Olika exempel på Subshell

De olika sätten att köra skriptet i underskalet visas i den här delen av handledningen.

Exempel 1: Kör subskalet med enkla citat och dubbla citat

Skapa en Bash-fil med följande skript som skriver ut aktuellt datum och tid. Därefter skrivs $strVal-variabeln ut genom att omsluta subshell-skriptet inom de enkla citattecken och de dubbla citattecken.







#!/bin/bash

#Skriv ut kommandot `date` i underskalet

eko 'Idag är 'datum'. '

#Definiera en strängvariabel

strVal = 'Bash Subshell'

#Skriv ut variabeln i underskalet med enstaka citattecken

eko 'Utgången av enstaka citattecken:' '$(echo $strVal)'

#Skriv ut variabeln i underskalet med dubbla citattecken

eko 'Utgången av dubbla citattecken:' ' $(echo $strVal) '

Följande utdata visas efter exekvering av skriptet. Subshell-skriptet skrivs ut som en sträng när det omges av de enskilda citattecken. Subshell-skriptet körs när det omges av dubbla citattecken:





Exempel 2: Sök i alla filer i det särskilda tillägget med hjälp av underskalet

Skapa en Bash-fil med följande skript som tar filtillägget som en input från användaren. Därefter exekveras kommandot 'ls' i underskalet för att söka i alla filer med det specifika tillägget.





#!/bin/bash

eko -n 'Ange namnet på filtillägget:'

#Ta namnet på filtillägget som kommer att sökas igenom

läsa ext

#Kontrollera inmatningsvärdet

om [ [ $ext == '' ] ] ; sedan

#Skriv ut felmeddelande

eko 'Ingen förlängning ges.'

annan

eko 'Filnamn med $ext förlängning:'

#Skriv ut alla filnamn med det angivna tillägget

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

vara

Följande utdata visas efter exekvering av skriptet med 'txt'-ingången. Enligt utdata finns tre textfiler på den aktuella platsen:



Följande utdata visas efter exekvering av skriptet med det tomma värdet:

Exempel 3: Kör det aritmetiska uttrycket i underskalet

Skapa en Bash-fil med följande skript där variabeln med samma namn används i huvudskalet och underskalet. Den aritmetiska operationen definieras i huvudskalet och underskalet.

#!/bin/bash

#Definiera en överordnad skalvariabel

siffra = 10

#Skriv ut resultatet baserat på variabeln för det överordnade skalet

( ( resultat = $nummer + 5 ) )

eko 'Summan av $nummer +5= $resultat '

#Skapa en subshell-variabel med samma namn som det överordnade skalet

( siffra = tjugo ; ( ( resultat = $nummer + 10 ) ) ; eko 'Summan av $nummer +5= $resultat ' )

#Skriv ut resultatet baserat på variabeln i det överordnade skalet igen

eko 'Summan av $nummer +5= $resultat '

Följande utdata visas efter exekvering av skriptet. Den första och den sista utgången visar resultatet av huvudskalet. Den andra utgången visar resultatet av underskalet. Variabeln för huvudskalet modifieras inte av variabeln för underskalet:

Exempel 4: Kör flera kommandon i underskalet

Skapa en Bash-fil med följande skript som skickar utdata från kommandot 'echo' till kommandot 'sed' som ersätter det matchande strängvärdet med en annan sträng. Utdata från kommandot 'echo' är 'JavaScript'. Så detta värde jämförs med 'Java' och 'JavaScript'. Om en matchning hittas ersätts de matchande strängarna med 'Typ'-strängen.

#!/bin/bash

#Definiera ett strängvärde

strVal = 'JavaScript'

#Skriv ut det ursprungliga strängvärdet

eko 'Strängvärde: $strVal '

#Skriv ut subshell-värdet

eko -n 'Subshell värde: '

eko ' $(echo $strVal | sed 's|Java|JavaScript-typ|') '

Följande utdata visas efter exekvering av skriptet. Enligt utgången ersätts 'Java'-strängen med 'Type'-strängen. Utdata från underskalet är 'JavaScript TypeScript':


Slutsats

Ett eller flera kommandon eller skript kan köras med hjälp av subshell utan att påverka huvudskalet. Syften med att använda underskalet förklaras i den här handledningen med hjälp av flera exempel. Olika typer av uppgifter som att söka i filerna, beräkna summan av siffror, ersätta strängarna etc. görs av subshell i de givna exemplen. Konceptet med att använda underskalet är korrekt demonstrerat och de nya Bash-användarna kommer nu att kunna använda underskalet efter att ha läst den här handledningen.