Subshell Bash

Subshell Bash



A volte, richiede di eseguire uno o più comandi o script in background. Questa attività può essere eseguita scrivendo tutti i comandi o gli script in un file di script ed eseguendo il file utilizzando la e commerciale (&) o eseguendo i comandi o gli script nella subshell dalla shell corrente. La subshell può essere utilizzata per eseguire più comandi o script racchiudendola tra $() o backtick (`). I metodi di utilizzo della subshell di Bash sono mostrati in questo tutorial.

Diversi esempi di Subshell

I diversi modi di eseguire lo script nella subshell sono mostrati in questa parte del tutorial.

Esempio 1: eseguire la subshell utilizzando le virgolette singole e le virgolette doppie

Crea un file Bash con il seguente script che stampa la data e l'ora correnti. Successivamente, la variabile $strVal viene stampata racchiudendo lo script subshell tra virgolette singole e doppie.







#!/bin/bash

#Stampa il comando `date` nella subshell

eco 'Oggi è `data` '

#Definisci una variabile stringa

strVal = 'Bash Subshell'

#Stampa la variabile nella subshell usando le virgolette singole

eco 'L'output delle virgolette singole:' '$(echo $strVal)'

#Stampa la variabile nella subshell usando le virgolette

eco 'L'output delle virgolette doppie:' ' $(echo $strVal) '

Il seguente output viene visualizzato dopo l'esecuzione dello script. Lo script subshell viene stampato come una stringa quando è racchiuso tra virgolette singole. Lo script subshell viene eseguito quando è racchiuso tra virgolette:





Esempio 2: ricerca di tutti i file con l'estensione specifica utilizzando la subshell

Crea un file Bash con il seguente script che accetta l'estensione del file come input dall'utente. Successivamente, il comando 'ls' viene eseguito nella subshell per cercare tutti i file di quella particolare estensione.





#!/bin/bash

eco -N 'Inserisci il nome dell'estensione del file:'

#Prendi il nome dell'estensione del file che verrà cercato

Leggere est

#Controlla il valore inserito

Se [ [ $est == '' ] ] ; Poi

#Stampa messaggio di errore

eco 'Nessuna proroga è data.'

altro

eco 'Nomi di file con $est estensione:'

#Stampa tutti i nomi di file con l'estensione data

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

Essere

Il seguente output viene visualizzato dopo l'esecuzione dello script con l'input 'txt'. In base all'output, esistono tre file di testo nella posizione corrente:



Il seguente output viene visualizzato dopo l'esecuzione dello script con il valore vuoto:

Esempio 3: eseguire l'espressione aritmetica nella subshell

Crea un file Bash con il seguente script in cui la variabile con lo stesso nome viene utilizzata nella shell principale e nella subshell. L'operazione aritmetica è definita nella shell principale e nella subshell.

#!/bin/bash

#Definisci una variabile shell madre

numero = 10

#Stampa il risultato in base alla variabile della shell genitore

( ( risultato = $numero + 5 ) )

eco 'La somma di $numero +5= $risultato '

#Crea una variabile subshell con lo stesso nome della shell madre

( numero = venti ; ( ( risultato = $numero + 10 ) ) ; eco 'La somma di $numero +5= $risultato ' )

#Stampa di nuovo il risultato in base alla variabile della shell madre

eco 'La somma di $numero +5= $risultato '

Il seguente output viene visualizzato dopo l'esecuzione dello script. Il primo e l'ultimo output mostrano il risultato della shell principale. Il secondo output mostra il risultato della subshell. La variabile della shell principale non viene modificata dalla variabile della subshell:

Esempio 4: eseguire più comandi nella subshell

Crea un file Bash con il seguente script che invia l'output del comando 'echo' nel comando 'sed' che sostituisce il valore della stringa corrispondente con un'altra stringa. L'output del comando 'echo' è 'JavaScript'. Quindi, questo valore viene confrontato con 'Java' e 'JavaScript'. Se viene trovata una corrispondenza, le stringhe corrispondenti vengono sostituite dalla stringa 'Tipo'.

#!/bin/bash

#Definisci un valore stringa

strVal = 'Javascript'

#Stampa il valore della stringa originale

eco 'Valore stringa: $strVal '

#Stampa il valore della subshell

eco -N 'Valore subshell: '

eco ' $(echo $strVal | sed 's|Java|Tipo JavaScript|') '

Il seguente output viene visualizzato dopo l'esecuzione dello script. Secondo l'output, la stringa 'Java' viene sostituita dalla stringa 'Tipo'. L'output della subshell è 'JavaScript TypeScript':


Conclusione

Uno o più comandi o script possono essere eseguiti usando la subshell senza influenzare la shell principale. Gli scopi dell'utilizzo della subshell sono spiegati in questo tutorial utilizzando più esempi. Diversi tipi di attività come la ricerca dei file, il calcolo della somma dei numeri, la sostituzione delle stringhe, ecc. vengono eseguiti dalla subshell negli esempi forniti. Il concetto di utilizzo della subshell è stato adeguatamente dimostrato ei nuovi utenti di Bash saranno ora in grado di utilizzare la subshell dopo aver letto questo tutorial.