Bash Subshells

Bash Subshells



Às vezes, requer que você execute um ou mais comandos ou scripts em segundo plano. Essa tarefa pode ser executada escrevendo todos os comandos ou scripts em um arquivo de script e executando o arquivo usando e comercial (&) ou executando os comandos ou scripts no subshell a partir do shell atual. O subshell pode ser usado para executar vários comandos ou scripts, colocando $() ou crases (`). Os métodos de uso do subshell Bash são mostrados neste tutorial.

Diferentes Exemplos de Subshell

As diferentes formas de executar o script no subshell são mostradas nesta parte do tutorial.

Exemplo 1: Executar o Subshell Usando Aspas Simples e Duplas

Crie um arquivo Bash com o seguinte script que imprime a data e hora atuais. Em seguida, a variável $strVal é impressa colocando o script subshell entre aspas simples e duplas.







#!/bin/bash

# Imprima o comando `date` no subshell

eco 'Hoje é `data` '

#Define uma variável de string

strVal = 'Subshell Bash'

#Imprima a variável no subshell usando aspas simples

eco 'A saída de aspas simples:' '$(echo $strVal)'

#Imprima a variável no subshell usando aspas duplas

eco 'A saída de aspas duplas:' ' $(echo $strVal) '

A saída a seguir aparece após a execução do script. O script do subshell é impresso como uma string quando é colocado entre aspas simples. O script subshell é executado quando está entre aspas duplas:





Exemplo 2: Pesquisar todos os arquivos da extensão específica usando o subshell

Crie um arquivo Bash com o seguinte script que usa a extensão do arquivo como uma entrada do usuário. Em seguida, o comando “ls” é executado no subshell para pesquisar todos os arquivos dessa extensão específica.





#!/bin/bash

eco -n 'Digite o nome da extensão do arquivo:'

#Pegue o nome da extensão do arquivo que será pesquisado

ler ramal

#Verifique o valor de entrada

se [ [ $ext == '' ] ] ; então

#Imprimir mensagem de erro

eco 'Nenhuma extensão é dada.'

outro

eco 'Nomes de arquivos com $ext extensão:'

#Imprima todos os nomes de arquivos com a extensão fornecida

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

ser

A seguinte saída aparece após a execução do script com a entrada “txt”. De acordo com a saída, existem três arquivos de texto no local atual:



A seguinte saída aparece após a execução do script com o valor vazio:

Exemplo 3: Executar a Expressão Aritmética no Subshell

Crie um arquivo Bash com o seguinte script onde a variável de mesmo nome é usada no shell principal e no subshell. A operação aritmética é definida no shell principal e no subshell.

#!/bin/bash

#Define uma variável de shell pai

número = 10

#Imprime o resultado com base na variável do shell pai

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

eco 'A soma de $número +5= $resultado '

#Cria uma variável de subshell com o mesmo nome do shell pai

( número = vinte ; ( ( resultado = $número + 10 ) ) ; eco 'A soma de $número +5= $resultado ' )

#Imprima o resultado com base na variável do shell pai novamente

eco 'A soma de $número +5= $resultado '

A saída a seguir aparece após a execução do script. A primeira e a última saída mostram o resultado do shell principal. A segunda saída mostra o resultado do subshell. A variável do shell principal não é modificada pela variável do subshell:

Exemplo 4: Execute vários comandos no subshell

Crie um arquivo Bash com o seguinte script que envia a saída do comando “echo” para o comando “sed” que substitui o valor da string correspondente por outra string. A saída do comando “echo” é “JavaScript”. Portanto, esse valor é comparado com “Java” e “JavaScript”. Se uma correspondência for encontrada, as strings correspondentes serão substituídas pela string “Type”.

#!/bin/bash

#Define um valor de string

strVal = 'JavaScript'

# Imprime o valor da string original

eco 'Valor da string: $strVal '

#Imprime o valor do subshell

eco -n 'Valor do subshell: '

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

A saída a seguir aparece após a execução do script. De acordo com a saída, a string “Java” é substituída pela string “Type”. A saída do subshell é “JavaScript TypeScript”:


Conclusão

Um ou mais comandos ou scripts podem ser executados usando o subshell sem afetar o shell principal. As finalidades do uso do subshell são explicadas neste tutorial usando vários exemplos. Diferentes tipos de tarefas, como pesquisar os arquivos, calcular a soma dos números, substituir as strings, etc., são executados pelo subshell nos exemplos fornecidos. O conceito de uso do subshell está devidamente demonstrado e os novos usuários do Bash agora poderão usar o subshell depois de ler este tutorial.