Bash Subshells

Bash Subshells



De vegades, requereix que executeu una o més ordres o scripts en segon pla. Aquesta tasca es pot fer escrivint totes les ordres o scripts en un fitxer de script i executant el fitxer amb et (&) o executant les ordres o scripts a la subshell des de l'intèrpret d'ordres actual. El subshell es pot utilitzar per executar diverses ordres o scripts tancant-los amb $() o els backticks (`). Els mètodes per utilitzar la subshell Bash es mostren en aquest tutorial.

Diferents exemples de subshell

Les diferents maneres d'executar l'script a la subshell es mostren en aquesta part del tutorial.

Exemple 1: executeu la subshell utilitzant les cometes simples i les cometes dobles

Creeu un fitxer Bash amb el següent script que imprimeix la data i l'hora actuals. A continuació, la variable $strVal s'imprimeix tancant l'script de subshell entre les cometes simples i les cometes dobles.







#!/bin/bash

#Imprimeix l'ordre `date` a la subshell

eco 'Avui és 'data' '

#Definiu una variable de cadena

strVal = 'Bash Subshell'

#Imprimeix la variable a la subshell utilitzant cometes simples

eco 'La sortida de cometes simples:' '$(echo $strVal)'

#Imprimeix la variable a la subshell utilitzant cometes dobles

eco 'La sortida de cometes dobles:' ' $(eco $strVal) '

La sortida següent apareix després d'executar l'script. L'script de subshell s'imprimeix com una cadena quan s'adjunta entre cometes simples. L'script de subshell s'executa quan s'adjunta entre cometes dobles:





Exemple 2: cerqueu tots els fitxers de l'extensió concreta utilitzant la subshell

Creeu un fitxer Bash amb el següent script que prengui l'extensió del fitxer com a entrada de l'usuari. A continuació, s'executa l'ordre 'ls' a la subshell per cercar tots els fitxers d'aquesta extensió concreta.





#!/bin/bash

eco -n 'Introduïu el nom de l'extensió del fitxer:'

#Preneu el nom de l'extensió del fitxer que es cercarà

llegir ext

#Comprova el valor d'entrada

si [ [ $ext == '' ] ] ; aleshores

#Missatge d'error d'impressió

eco 'No es dóna cap pròrroga'.

altra cosa

eco 'Noms de fitxers amb $ext extensió:'

#Imprimeix tots els noms de fitxer amb l'extensió donada

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

ser

La sortida següent apareix després d'executar l'script amb l'entrada 'txt'. Segons la sortida, hi ha tres fitxers de text a la ubicació actual:



La sortida següent apareix després d'executar l'script amb el valor buit:

Exemple 3: executeu l'expressió aritmètica a la subshell

Creeu un fitxer Bash amb el següent script on s'utilitzi la variable del mateix nom a l'intèrpret d'ordres principal i al subshell. L'operació aritmètica es defineix a l'intèrpret principal i al subshell.

#!/bin/bash

#Definiu una variable de shell pare

nombre = 10

#Imprimeix el resultat en funció de la variable de l'intèrpret d'ordres pare

( ( resultat = $número + 5 ) )

eco 'La suma de $número +5= $resultat '

#Creeu una variable de subshell amb el mateix nom que l'intèrpret d'ordres pare

( nombre = 20 ; ( ( resultat = $número + 10 ) ) ; eco 'La suma de $número +5= $resultat ' )

#Imprimeix de nou el resultat basat en la variable de l'intèrpret d'ordres pare

eco 'La suma de $número +5= $resultat '

La sortida següent apareix després d'executar l'script. La primera i l'última sortida mostren el resultat de l'intèrpret d'ordres principal. La segona sortida mostra el resultat de la subshell. La variable del shell principal no es modifica per la variable del subshell:

Exemple 4: executeu diverses ordres a la subshell

Creeu un fitxer Bash amb l'script següent que envia la sortida de l'ordre 'eco' a l'ordre 'sed' que substitueix el valor de cadena coincident per una altra cadena. La sortida de l'ordre 'eco' és 'JavaScript'. Per tant, aquest valor es compara amb 'Java' i 'JavaScript'. Si es troba una coincidència, les cadenes coincidents se substituiran per la cadena 'Tipus'.

#!/bin/bash

#Definiu un valor de cadena

strVal = 'JavaScript'

#Imprimeix el valor de la cadena original

eco 'Valor de cadena: $strVal '

#Imprimeix el valor de la subshell

eco -n 'Valor de subshell:'

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

La sortida següent apareix després d'executar l'script. Segons la sortida, la cadena 'Java' es substitueix per la cadena 'Tipus'. La sortida de la subshell és 'JavaScript TypeScript':


Conclusió

Es poden executar una o més ordres o scripts mitjançant el subshell sense afectar el shell principal. Els propòsits d'utilitzar la subshell s'expliquen en aquest tutorial mitjançant diversos exemples. Diferents tipus de tasques, com ara cercar els fitxers, calcular la suma de nombres, substituir les cadenes, etc., les fa la subshell als exemples donats. El concepte d'utilitzar la subshell està correctament demostrat i els nous usuaris de Bash ara podran utilitzar la subshell després de llegir aquest tutorial.