Tutorial de script Bash para iniciantes

Bash Scripting Tutorial



A linguagem de comando padrão do Linux é o script Bash. Precisamos executar muitos comandos no Linux diariamente para muitos propósitos. Essas tarefas diárias podem ser automatizadas usando um script bash. Qualquer usuário pode aprender essa linguagem de script de maneira muito fácil e rápida. Se você é novo na programação bash, este tutorial é para você.

Conteúdo:

  1. Comentários
  2. comando echo
  3. Variáveis
  4. Afirmação condicional
  5. rotações
  6. Funções
  7. Chamando programas em um script
  8. Criando Menus
  9. Processamento de linha de comando
  10. Aritmética
  11. Manipulação de cordas
  12. Retorno de códigos de retorno de um script e captura em outro script
  13. Ler e gravar em arquivos
  14. Tubos

Comentários

Adicionar comentários com o código é uma parte essencial de qualquer linguagem de programação. Os comentários não são analisados ​​com o script no momento da execução. O leitor pode entender qualquer código corretamente se o código for bem comentado. Você pode adicionar um comentário de várias maneiras no script bash. Como você pode adicionar comentários de uma ou várias linhas em um script bash é mostrado nesta parte. Crie um arquivo bash com o seguinte script para saber o uso do comentário bash. Aqui, o símbolo ‘#’ é usado para adicionar um comentário de linha única e aspas simples (‘) com‘: ’é usado para adicionar comentários de várias linhas.







bash_comment.sh



#! / bin / bash
# Pegue um número como entrada
jogou fora 'Digite um número'
leiturapara
:'
Verifique se o número de entrada é
menor que 10 ou maior que 10 ou igual a 10
'

E se [[ $ a -lt 10 ]]
então
jogou fora 'O número é menor que 10'
elif [[ $ a -gt 10 ]]
então
jogou fora 'O número é maior que 10'
outro
jogou fora 'O número é igual a 10'
ser

Saída:



Execute o script.





$bashbash_comment.sh

Aqui, o script é executado três vezes com os valores de entrada 3, 10 e 90. A seguinte saída aparecerá.



Se você quiser saber mais sobre os comentários do bash, você pode verificar este tutorial .

Vá para o topo

comando de eco

O comando `echo` é usado em bash para imprimir a saída no terminal. Várias opções podem ser usadas com o comando echo em bash para imprimir a saída de maneiras diferentes. Crie um arquivo bash com o seguinte script para saber os dois usos simples do comando `echo`. Aqui, o primeiro comando `echo` imprimirá um texto simples de dados com uma nova linha e o segundo comando echo imprimirá um texto simples sem uma nova linha.

echo_test.sh

#! / bin / bash
# Imprima o primeiro texto
jogou fora 'Imprimir texto com uma nova linha'
# Imprima o segundo texto
jogou fora -n 'Imprimir texto sem uma nova linha'

Saída:

Execute o script.

$bashecho_test.sh

A seguinte saída aparecerá após a execução do comando acima.

Existem muitos outros usos do comando `echo` no bash. Você pode verificar este tutorial para saber mais sobre o comando `echo`.

Vá para o topo

Variáveis

A declaração de variável é uma parte necessária de qualquer linguagem de programação. Variáveis ​​Bash podem ser declaradas de maneiras diferentes. Quando um valor é atribuído a uma variável, nenhum símbolo é usado no início da variável. O símbolo '$' é usado com o nome da variável no momento da leitura do valor da variável. A variável pode ser usada a partir do terminal ou em qualquer script bash.

Os seguintes comandos irão declarar uma variável de string chamada mystr com um determinado valor e em seguida imprima o valor da variável no terminal.

$mystr='Eu gosto de programação bash'
$jogou fora $ mystr

Saída:

Crie um arquivo bash com o seguinte script. Duas variáveis ​​são declaradas aqui. Estes são $ a e $ b . Se o valor de entrada que está armazenado em $ a é igual a $ b então a mensagem, Os números são iguais será impresso de outra forma Os números não são iguais será impresso.

var.sh

#! / bin / bash
jogou fora 'Digite um número'
leiturapara
b=100
E se [[ $ a -eq $ b ]]
então
jogou fora 'Os números são iguais'
outro
jogou fora 'Os números não são iguais'
ser

Saída:

Execute o script.

$bashvar.sh

O comando acima é executado duas vezes com os valores 56 e 100. A seguinte saída aparecerá.

Se você quiser saber mais sobre variáveis ​​bash, você pode verificar este tutorial .

Vá para o topo

Afirmação condicional

Como outra linguagem de programação, você pode usar a instrução condicional no bash. ‘ If-then-else ' e ' caso 'Declarações são usadas principalmente para implementar declarações de condição em qualquer linguagem de programação. O uso de declaração condicional usando 'E se' declaração é mostrada nesta seção deste tutorial. Crie um arquivo bash com o seguinte script onde a instrução condicional é usada. Aqui, dois valores serão retirados do usuário como entrada e armazenados nas variáveis, $ code , e $ idade . Declaração 'if' é usada para verificar o valor de $ idade é maior que ou igual a 18 e o valor do $ code é 1100 . Se ambas as condições forem verdadeiras, a mensagem, Você está qualificado para ver o filme será impresso de outra forma Você não está qualificado para ver o filme será impresso.

cond.sh

#! / bin / bash

jogou fora 'Insira seu código'
leituracódigo
jogou fora 'Digite sua idade'
leituraera

E se [[ $ idade -dar 18 && $ code -eq '1100' ]]
então
jogou fora 'Você é elegível para ver o filme'
outro
jogou fora 'Você não é elegível para ver o filme'
ser

Saída:

Execute o script.

$bashcond.sh

A seguinte saída aparecerá após tomar diferentes valores de entrada. 1100 é fornecido como um código e 5 é fornecido como idade para a primeira execução e se a condição retornar falso para esses valores. 1100 é fornecido como um código e 45 é fornecido como idade para a segunda execução que retorna verdadeiro para a condição if.

Se quiser saber mais sobre a instrução condicional bash, você pode verificar este tutorial.

Vá para o topo

rotações

Quando algumas partes do script precisam ser executadas várias vezes, o loop é usado para fazer a tarefa. O Bash suporta três tipos de declaração de loops como outras linguagens. Esses são os loops for, while e until. Com base nos requisitos de programação, um loop específico é usado no script. Os usos desses três tipos de loops são mostrados nesta seção usando exemplos simples.

Usando o loop for

Crie um arquivo bash com o seguinte script onde ` para` loop é usado para iteração. `para` loop é usado principalmente para iterar uma lista de dados ou um array. Aqui, uma lista de nomes de dias da semana é usada e cada nome de dia da semana é iterado usando o loop for. `if` instrução é usada para imprimir uma mensagem específica com base no nome do dia da semana.

for.sh

#Leia o nome do dia da semana em cada iteração do loop
paradianosegunda terça quarta quinta sexta sábado domingo
Faz

#Verifique se o nome do dia da semana é segunda ou quinta
E se [[ $ dia=='Segunda-feira' || $ dia=='Quinta-feira' ]]
então
jogou fora 'Reunião em$ diaàs 9h30 '

#Verifique se o nome do dia da semana é terça, quarta ou sexta-feira
elif [[ $ dia=='Terça' || $ dia=='Quarta-feira' || $ dia=='Sexta-feira' ]]
então
jogou fora 'Treinando$ diaàs 11h '
outro

#Imprimir ‘Feriado’ para outros dias
jogou fora '$ diaé feriado '
ser
feito

Saída:

Execute o script.

$bashfor.sh

A seguinte saída aparecerá após a execução do script.

Se você quiser saber mais sobre o uso de bash for loop, pode verificar este tutorial.

Usando loop while

Crie um arquivo bash com o seguinte script onde ` enquanto ` loop é usado para iteração. Este script imprimirá os números de 1 a 20 que são pares e divisíveis por 5. Aqui, $ contador variável é usada para controlar a iteração do loop e o valor desta variável é incrementado em 1 em cada iteração. Quando `if` a condição retornará verdadeira e então imprimirá o valor de $ contador .

#! / bin / bash

# Imprima a mensagem
jogou fora 'Imprime os números pares e divisíveis por 5'

#Inicializar o contador
contador=1

#Iterar o loop até que o valor do $ counter seja menor ou igual a 20
enquanto [ $ contador -a vinte ]
Faz

#Verifique se o contador $ é divisível por 2 e 5
E se [[ $ contador%2-eq 0 && $ contador%5-eq 0 ]]
então
#Print $ counter sem nova linha
jogou fora '$ contador'
ser

#Incrementar $ contador em 1
((contador ++))
feito
jogou fora 'Feito'

Saída:

$bashwhile.sh

Existem apenas números entre 1 e 20 que são pares e divisíveis por 5. A seguinte saída aparecerá após a execução do script.

Se você quiser saber mais usado do bash ` enquanto` loop, então você pode verificar este tutorial .

Usando o loop até

Crie um arquivo bash com o seguinte script onde ` até` loop é usado para iteração. Este script imprimirá todos os números ímpares de 0 a 20. $ n variável é usada neste script para iterar o loop.

até.sh

#! / bin / bash

#Inicialize a variável, n
n=vinte

#Repita o loop até que o valor de $ n seja maior que 0
até [ $ n -lt 0 ]
Faz

#Verifique se o valor de n é ímpar
E se [[ $ n%2-gt 0 ]]
então
jogou fora $ n
ser

#Incrementar o valor de n em 1
((n=$ n-1))
feito

Saída:

Execute o script.

$bashaté.sh

O script imprimirá todos os números pares de 20 a 1. A seguinte saída aparecerá após a execução do script.

Vá para o topo

Funções

Quando um bloco de código precisa ser executado várias vezes em um script, a função é usada para fazer a tarefa. Você precisará chamar a função pelo nome apenas quando o script definido na função precisar ser executado muitas vezes, em vez de adicionar o mesmo script várias vezes. O primeiro colchete inicial e final é usado com o nome da função para declarar a função no script bash. A função pode ser chamada apenas pelo nome da função em bash. O Bash não oferece suporte a argumentos de função como outra linguagem de programação padrão. Mas o valor pode ser passado para a função bash de uma maneira diferente que é mostrada nesta seção. O valor pode ser retornado da função com a instrução return ou sem usar a instrução return.

Crie um arquivo bash com o seguinte script para saber como as funções podem ser declaradas e chamadas no script bash. Três funções são declaradas no script. A primeira função é declarada para imprimir uma mensagem simples, Programação Bash para iniciantes . A segunda função é declarada para atribuir um valor de string em uma variável, $ return_str que vai imprimir, Aprenda programação bash com LinuxHint depois de chamar a função. A terceira função é declarada para ler um valor de argumento como o raio do círculo que será fornecido no momento da chamada da função. Aqui, local é usado para ler o valor do argumento. Esta função irá calcular a área do círculo com base no valor do raio usando a fórmula, πr2 e imprimir o valor da área calculada.

func.sh

#! / bin / bash

# Declare uma função simples
funçãoprint_message()
{
jogou fora 'Programação Bash para iniciantes'
}

# Declare uma função para retornar um valor de string
funçãoret_strdata()
{
#Inicializar a variável com o valor da string
return_str='Aprenda programação bash com LinuxHint'
}

# Declarar uma função para ler o valor do argumento
funçãocalcular área()

#Leia o valor do argumento passado
local raio=$ 1
área= $(jogou fora $ radius*$ radius*3,14

#Chame a função para imprimir uma mensagem simples
print_message

#Chame a função que irá atribuir um valor de string em uma variável
ret_strdata

#Imprima o valor da variável
jogou fora $ return_str

#Leia o valor do raio
jogou fora 'Insira o valor do raio'
leituratrabalhar

#Chame a função com o valor do raio
calcular área$ rad

Saída:

Execute o script.

$bashfunc.sh

A seguinte saída aparecerá após a execução do script. As primeiras duas linhas serão impressas chamando as funções, print_message () e ret_strdata () . A última linha será impressa chamando a função, calcular área () com o valor do raio de entrada obtido.

Se você quiser saber como retornar uma string da função bash, você pode esta tutoria a.

Vá para o topo

Chamando programas em um script

Você pode usar muitos tipos de comandos para chamar outros programas em qualquer script bash, como fonte, bash, eval, exec , etc. Suponha que três arquivos bash, add.sh , subtrair.sh, multiply.sh e division.sh criado para realizar adição, subtração, multiplicação e divisão. Aqui, subtrair.sh e division.sh leia os argumentos da linha de comando. O script de todos esses quatro arquivos é fornecido a seguir.

add.sh

#! / bin / bash
para=60
b=40
((resultado=$ a+$ b))
jogou fora 'A adição de$ a+$ b=$ resultado'

subract.sh

#! / bin / bash
para=$ 1
b=$ 2
((resultado=$ a-$ b))
jogou fora 'A subtração de$ a-$ b=$ resultado'

multiply.sh

#! / bin / bash
((resultado=$ 1*$ 2))
jogou fora 'A multiplicação de $ 1 e $ 2 é$ resultado'

divide.sh

#! / bin / bash
para=$ 1
b=2
((resultado=$ a/$ b))
jogou fora 'A divisão de$ apor$ bé$ resultado'

Crie um arquivo bash chamado, callpro.sh com o seguinte script para chamar os arquivos bash mencionados usando os comandos source, bash, eval e exec. Você deve definir a permissão de execução para os quatro arquivos acima antes de executar o script a seguir. comando `source` é usado para chamar add.sh Arquivo. O comando `bash` é usado para executar o arquivo subtract.sh. O comando `eval` é usado para executar o arquivo multiply.sh. Dois valores de entrada são enviados como argumentos de linha de comando para o comando `eval`. O último comando é o comando exec que funciona apenas com o caminho absoluto. Para isso, o nome do caminho completo do arquivo divide.sh é fornecido no script.

callpro.sh

#! / bin / bash
script1='add.sh'
script2='subtract.sh'
script3='multiply.sh'
script4='/home/fahmida/code/divide.sh'

fonte '$ script1'

bash $ script2 cinquenta vinte

jogou fora 'Insira o valor de um'
leiturapara
jogou fora 'Insira o valor de b'
leiturab
avaliação bash $ script3 $ a $ b
exec $ script4 30

Saída:

Execute o script.

$bashcallpro.sh

A seguinte saída aparecerá após a execução do script.

Vá para o topo

Criando Menus

Existe um comando útil no bash para criar um menu simples que é chamado `select` comando. Diferentes tipos de menus podem ser criados usando este comando. Uma lista de dados particular é usada para criar um menu por este comando. Crie um arquivo bash com o seguinte código para ver o uso de `select` comando para criar um menu. Neste exemplo, a lista de cinco itens será impressa como um menu e solicitará que o usuário escolha qualquer idioma da lista. O valor selecionado será armazenado na variável, $ idioma que é impresso posteriormente pela concatenação com outra string. O script solicitará continuamente a seleção do idioma até que o usuário pressione 6 para terminar a partir do script.

menu.sh

#! / bin / bash

#Imprimir mensagem para o usuário
jogou fora 'Selecione seu idioma favorito'

# Defina a lista de um item do menu
selecionarlínguanoC# Saída Java PHP Python Bash
Faz
#Imprima o valor selecionado
E se [[ $ idioma=='Saída' ]]
então
saída 0
outro
jogou fora 'O idioma selecionado é$ idioma'
ser
feito

Saída:

Execute o script.

$bashmenu.sh

De acordo com a seguinte saída, o usuário pressionou 3 pela primeira vez que imprimiu PHP e pressionou 6 pela segunda vez que encerrou o script.

Se você quiser saber mais sobre a criação do menu bash com `select`, então você pode visitar este tutorial.

Vá para o topo

Processamento de linha de comando

Às vezes, precisamos fornecer valores de entrada ao executar o script a partir da linha de comando. Essa tarefa pode ser realizada de duas maneiras no bash. Uma maneira é usando variáveis ​​de argumento e outra maneira é usando a função getopts. A leitura de dados de entrada de linha de comando do terminal usando a variável de argumento é mostrada nesta seção.

Crie um arquivo bash com o seguinte script para ver o uso da leitura do valor do argumento da linha de comando. Este script irá ler três argumentos de linha de comando que serão armazenados nas variáveis ​​$ operand1, $ operand2 e $ operator. Para executar o script corretamente, o primeiro e o terceiro valores de argumento devem ser o número e o valor do segundo argumento deve ser qualquer um dos quatro operadores aritméticos (‘+’, ‘-’, ‘/’, ‘x’). E se declaração irá verificar o valor do operador $ e fazer a operação com base no operador e imprimir o valor.

cl1.sh

#! / bin / bash

# Imprima as variáveis ​​de argumento
jogou fora 'Os valores dos argumentos são: $ 1 $ 2 $ 3'

# Armazenar valores de argumento
operand1=$ 1
operando 2=$ 3
operador=$ 2

# Verifique o valor do argumento do segundo comando para fazer a operação aritmética
E se [[ $ operator=='+' ]]
então
((resultado=$ operand1+$ operand2))
elif [[ $ operator=='-' ]]
então
((resultado=$ operand1-$ operand2))
elif [[ $ operator=='x' ]]
então
((resultado=$ operand1*$ operand2))
elif [[ $ operator=='/' ]]
então

((resultado=$ operand1/$ operand2))
ser

# imprime o resultado
jogou fora -E 'O resultado é =$ resultado'

Saída:

Execute o script.

$bashcl1.sh

O script é executado quatro vezes para quatro tipos de operadores aritméticos. A seguinte saída aparecerá para os valores do argumento, 6 + 3, 6 - 3, 6 x 3 e 6/3 .

Os valores dos argumentos podem ser passados ​​com o par nome-valor em bash. Crie um arquivo bash com o seguinte script para mostrar como ler valores de argumento com o nome. O script lerá duas variáveis ​​de argumento. Os valores dos argumentos com nome são impressos na primeira instrução do script. Em seguida, um loop for é usado para iterar a matriz que contém os valores dos argumentos da linha de comando. Cada elemento da matriz é separado em um par de valores-chave usando o comando `cut`. Em seguida, a instrução case é usada para imprimir uma mensagem específica com base no valor da chave.

cl2.sh

. #! /sou/bash

# Imprima as variáveis ​​de argumento
jogou fora 'Os valores dos argumentos são: $ 1 $ 2'

#Leia cada argumento separadamente usando o loop for
paranervosono '[email protegido]'
Faz

#Separar nome e valor do argumento
chave= $(jogou fora $ arg | cortar -f1 -d=)
valor= $(jogou fora $ arg | cortar -f2 -d=)

#Imprimir mensagem com base no nome do argumento
caso $ chave no
nome) jogou fora 'Nome do aluno =$ valor';;
marca) jogou fora 'Marca obtida =$ valor' ;;
*)
esac
feito

Saída:

Execute o script com os seguintes argumentos de linha de comando.

$bashcl2.shnome= Abir Hossainmarca=90

Dois argumentos de linha de comando são fornecidos nos comandos acima. Estes são nome = Abir Hossain e marca = 90 . nome e marcas são separados pelo script e dois valores são impressos após a formatação da saída.

Processando argumentos de linha de comando usando getopts função não é discutida neste tutorial. Se você quiser saber sobre o processamento de linha de comando usando getopts função, então você pode visitar este tutorial .

Vá para o topo

Aritmética

Fazer operações aritméticas é um requisito comum de qualquer linguagem de programação. O Bash faz a operação aritmética de uma maneira diferente de outra linguagem de programação padrão. Existem várias maneiras de fazer operações aritméticas em bash. Uma das maneiras simples de fazer a operação aritmética é mostrada nesta seção. Crie um arquivo bash com o seguinte script. Quatro tipos de operações aritméticas são mostrados neste script. Uma soma simples e operações de divisão são mostradas usando primeiros colchetes duplos no início do script. A seguir, a operação de pré-incremento é mostrada. Finalmente, a forma de usar o operador abreviado é mostrada na última parte do script.

arith.sh

#! / bin / bash
# Calcule a soma
resultado= $((cinquenta+25))
# Imprimir valor de soma
jogou fora 'soma =$ resultado'

# Calcule a divisão
resultado= $((cinquenta/25))
# Imprimir valor da divisão
jogou fora 'divisão =$ resultado'

# Atribua um valor a N
N=10
# Fazendo pré-incremento
((- N))
# Imprime o valor de N
jogou fora 'Valor após decremento =$ N'

# Usando o operador abreviado
((N + =10 ))
# Imprime o valor de N
jogou fora 'Valor após adicionar 10 =$ N'

Saída:

Execute o script.

$basharith.sh

A seguinte saída aparecerá após a execução do script.

Todas as operações aritméticas são feitas usando colchetes duplos neste script acima. Mas você pode usar ' deixar ’,‘ expr ' e ' ac 'Comando para fazer a operação aritmética em bash. Se você quiser saber mais sobre esses comandos para fazer operações aritméticas bash, pode visitar este tutorial.

Vá para o topo

Manipulação de Cordas

Muitos tipos de tarefas podem ser realizados com os dados da string no bash. Alguns estão concatenando string, comparando string, dividindo uma string, alterando o caso da string, etc. Não há funções de string embutidas como outras linguagens padrão em bash para fazer as operações de string. Algumas manipulações comuns de strings são discutidas nesta seção deste tutorial.

String de Concatenação

A adição de duas ou mais strings é chamada de concatenação de strings. A corda é unida em bash, colocando uma após a outra. Crie um arquivo bash com o seguinte script para mostrar o uso da concatenação de strings. Duas variáveis ​​de string são inicializadas e impressas após combinar as variáveis. Aqui, o conteúdo de $ string1 e $ string2 será mesclado e impresso.

concat.sh

#! / bin / bash

#Initialize a primeira variável de string
string1='Eu gosto '
#Initialize a segunda variável de string
string2='Programação Bash'
#Imprimir depois de combinar as duas strings
jogou fora '$ string1$ string2'

Saída:

Execute o script.

$bashconcat.sh

A seguinte saída aparecerá após a execução do script.

Você pode saber mais sobre a concatenação de strings neste tutorial.

Vá para o topo

Comparando String

O Bash usa diferentes tipos de operadores para comparar dados de string. Crie um arquivo bash com o seguinte script para mostrar como comparar dois dados de string. Um valor de string é considerado como entrada no script que é comparado com outra string. Se o valor corresponder a uma mensagem, Você gosta de Python será impresso de outra forma Você gosta de PERL será impresso.

compare.sh

#! / bin / bash
jogou foraInsira qualquer valor de string
leituratexto

#Verifique se os dados de entrada são equivalentes a Python
E se [ $ text=='Pitão' ];então
jogou fora 'Você gosta de Python.'
outro
jogou fora 'Você gosta de PERL'
ser

Saída:

Execute o script.

$bashcompare.sh

A seguinte saída aparecerá após a execução do script onde o valor de entrada é ‘PERL’.

Você pode saber mais sobre a comparação de strings de este tutorial .

Dividindo a corda

O Bash não tem nenhuma função de divisão interna para dividir dados de string. Os dados da string podem ser divididos de várias maneiras no bash com base em diferentes tipos de delimitadores. Crie um arquivo bash com o seguinte script para mostrar como os dados da string podem ser divididos em bash. Um valor de string é considerado como entrada. Este script irá dividir o valor de $ text com base no espaço. Aqui o IFS variável é usada para definir o delimitador. `ler` comando é usado aqui para dividir o valor do texto e armazenar os valores em uma matriz. para loop é usado para iterar a matriz e imprimir o valor de cada elemento.

split.sh

#! / bin / bash
# Insira um valor de string
jogou foraInsira um valor de string
leituratexto
# Defina o delimitador
IFS=''
#Dividir o valor de $ text em uma matriz com base no delimitador de espaço
leitura -paraarr<<< '$ text'
# Imprime cada valor da matriz
paravalorno '$ {arr [@]}';
Faz
printf '$ valor n'
feito

Saída:

Execute o script.

$bashsplit.sh

A seguinte saída aparecerá após obter a entrada, Aprenda a programação Bash . Este valor de entrada é um texto de três palavras. Portanto, a corda é dividida em três partes.

Você pode saber mais sobre a comparação de strings de este tutorial .

Mudança de maiúsculas e minúsculas da corda

A maioria das linguagens de script possui funções integradas para alterar a capitalização dos dados da string. Mas o caso dos dados da string pode ser alterado no bash usando `tr` comando ou usando ':superior' e ':diminuir' palavras-chave. Crie um arquivo bash com o seguinte script para saber as maneiras de alterar maiúsculas e minúsculas no bash. Aqui, os primeiros dados da string são convertidos em maiúsculas usando ‘^^’ símbolo e a segunda string é convertida em minúsculas usando `tr` comando. `tr` O comando pesquisará todas as letras maiúsculas na string e converterá os caracteres em minúsculas.

case.sh

#! / bin / bash

#Inicializar os primeiros dados da string
texto 1='[email protegido]'

#Imprima o valor de $ text1 convertendo todos os caracteres em maiúsculas
jogou fora $ {email ^^}

#Inicializar os dados da segunda string
texto2= ’Bash Programming Basics’

#Imprima o valor de $ text2 convertendo todas as letras maiúsculas em minúsculas
jogou fora $ text2 | NS [:superior:] [:diminuir:]

Saída:

Execute o script.

$bashcase.sh

A seguinte saída aparecerá após a execução do script.

Você pode saber mais sobre a comparação de strings de este tutorial .

Vá para o topo

Lendo dados de string através do loop

Os dados da string funcionam como uma matriz de caracteres para qualquer linguagem de programação. Quão ' para 'Loop pode ser usado para ler dados de string em bash é mostrado nesta seção. Crie um arquivo base com o seguinte script para ler cada parte do valor da string usando o loop for.

readstr.sh

#! / bin / bas
# Leia cada palavra de um texto usando o loop for
paravalornoProgramação Bashparaos iniciantes
Faz
jogou fora $ valor
feito

Saída:

Execute o script.

$bashreadstr.sh

A seguinte saída aparecerá após a execução do script.

Você pode saber mais sobre a iteração de dados de string usando o loop de este tutorial .

Vá para o topo

Retorno de códigos de retorno de um script e captura em outro script

Um script bash pode capturar códigos de retorno de outro script chamando o script e usando ‘$?’ para ler o valor de retorno. Suponha que um arquivo bash chamado first.sh retorna um código após a execução. Crie outro arquivo bash chamado second.sh e adicione o seguinte script para capturar o valor de retorno e fazer algumas outras tarefas. O código de ambos os arquivos é fornecido abaixo. first.sh arquivo será chamado de second.sh arquivo no início do script. first.sh retornará um código de saída com base no valor de entrada. second.sh pegará o código por ‘$?’ e compare com 1. Se os dois valores forem iguais, ele imprimirá, O número de entrada é maior que 100 , caso contrário, será impresso, O número de entrada é menor ou igual a 100 .

first.sh

#! / bin / bash

jogou fora 'Insira um valor numérico'
leituran

# Verifique se o valor de entrada é menor ou igual a 100 ou não
E se [[ $ n -a 100 ]]
então
saída 0
outro
saída 1
ser

second.sh

#! / bin / bash

#Execute o arquivo, first.sh
bash 'first.sh'

#Verifique se o código de retorno é igual a 1 ou não
E se [ $? -eq 1 ]
então
jogou fora 'O número de entrada é maior que 100'
outro
jogou fora 'O número de entrada é menor ou igual a 100'
ser

Saída:

Execute o script.

$bashsecond.sh

A seguinte saída aparecerá quando o script for executado por 55 e 110 por duas vezes.

Vá para o topo

Ler e gravar em arquivos

Ler e gravar arquivos são requisitos comuns da programação bash. O Bash não possui nenhuma função incorporada, como outro idioma, para ler ou gravar o arquivo. Existem várias maneiras de ler o arquivo no bash. A maneira mais comum de ler ou escrever um arquivo em bash é usando `gato` comando. Mas este comando é usado para ler todo o conteúdo do arquivo de uma vez. Você também pode ler qualquer arquivo linha por linha usando qualquer loop e `ler` comando. Usando o operador de redirecionamento, ‘>’ , você pode gravar dados em qualquer arquivo no bash. Se você deseja anexar dados em qualquer arquivo, você deve usar '>>' operador. As operações de leitura e gravação de arquivo são mostradas na próxima parte desta seção.

Lendo arquivo em bash

Crie um arquivo bash com o seguinte script para ler um arquivo existente chamado ‘ hardware.txt ’. O conteúdo deste arquivo é fornecido abaixo. No script, todo o conteúdo do arquivo é lido por `gato` comando primeiro e depois, while loop é usado para ler o arquivo linha por linha.

hardware.txt

Monitor
Teclado
Mouse
Scanner
Impressora

readfile.sh

#! / bin / bash

jogou fora 'Lendo arquivo usando o comando cat'

# Leia o conteúdo do arquivo usando o comando `cat`
contente=``gatohardware.txt``
jogou fora $ content

jogou fora 'Lendo arquivo linha por linha usando loop'

# Atribuir o nome do arquivo
nome do arquivo='hardware.txt'

# Cada linha do arquivo será lida por cada iteração do loop
enquanto leituralinha;
Faz
# imprime a linha
jogou fora $ linha
feito<$ filename

Saída:

Execute os seguintes comandos.

$gatohardware.txt
$bashreadfile.sh

Aqui, o primeiro comando imprimirá o conteúdo do arquivo, hardware.txt sem executar nenhum script bash e o segundo comando executará o script de readfile.sh e imprimir o conteúdo do arquivo duas vezes usando `gato` comando e `ler` comando com loop while. Você pode visitar este tutorial para saber mais sobre como ler o arquivo linha por linha.

Gravando arquivo em bash

Crie um arquivo bash com o seguinte script para gravar um novo conteúdo em um novo arquivo e acrescentar dados a esse arquivo.

writefile.sh

#! / bin / bash

jogou fora 'Digite algum texto'
#Read string data
leiturastr1
#Adicione dados de entrada ao arquivo pela primeira vez
jogou fora $ str1 >test.txt

jogou fora 'Digite algum outro texto'
#Leia outro dado de string
leiturastr2
#Adicione dados de entrada no final do arquivo
jogou fora $ str2 >>test.txt

# Mostra o conteúdo completo do arquivo
jogou fora ``gatotest.txt``

Saída:

Execute o script.

$bashwritefile.sh

A seguinte saída aparecerá após a execução do script.

Vá para o topo

Tubos

Pipe é usado para redirecionar qualquer saída de comando para outra entrada de comando. Ele pode ser usado entre diferentes tipos de comandos bash para gerar saídas específicas. A entrada padrão é conectada à saída padrão no Linux por canal. Você precisa definir o comando em sequência com o símbolo de barra vertical (|) para obter a saída desejada. Dois ou mais comandos podem ser executados juntos em um único comando usando o pipe. Você tem que executar vários comandos em várias linhas sem tubo para fazer a mesma tarefa. Portanto, usar o pipe é muito benéfico para realizar muitos tipos de tarefas de forma resumida.

sintaxe:

comando1|command2|...

Aqui, a saída do command1 será passada como a entrada do command2.

O mesmo tipo de tarefa é feito com tubo e sem tubo na próxima parte desta seção. Suponha um arquivo de texto chamado marks.txt é fornecido com os seguintes dados.

marks.txt

Asraf CSE-409 79

Kabir CSE-304 95

Keya CSE-101 67

Asraf CSE-304 88

Keya CSE-409 90

Asraf CSE-101 92

Você tem que classificar os dados do arquivo e descobrir e imprimir todas as entradas do nome do aluno ‘K sim ' . Você pode fazer essa tarefa executando vários comandos sem usar um tubo que é mostrado na próxima seção. Os comandos a seguir precisarão ser executados para obter a saída desejada. O primeiro comando classificará o arquivo. O segundo comando irá pesquisar a entrada ‘K sim ' usando ` pegada `comando e armazena a saída em um temp.txt Arquivo. O terceiro comando contará o total de linhas de um temp.txt arquivo usando `wc` comando.

$ordenarmarks.txt
$pegada 'Keya'marks.txt>temp.txt
$banheiro -atemp.txt

Saída:

Duas entradas do aluno, ‘Keya’ existem no arquivo. Portanto, após executar os comandos acima, a seguinte saída aparecerá.

Você pode facilmente mesclar os três comandos acima e obter a mesma saída executando um único comando com um tubo que é mostrado no comando a seguir. Nenhum arquivo temporário é necessário aqui para obter a saída. Aqui, a saída do ` ordenar O comando `será passado como entrada de` pegada comando `e a saída do` pegada `será passado como entrada para o `wc` comando.

$ordenarmarks.txt| pegada 'Keya' | banheiro -a

Saída:

Depois de executar o comando acima, você obterá a seguinte saída como a saída do comando anterior. A saída do comando será 2.

Vá para o topo

Conclusão:

Os tópicos mais úteis e necessários da linguagem de script bash são abordados neste tutorial. Espero que o leitor seja beneficiado depois de ler este tutorial e seja capaz de escrever um script bash com mais eficiência.