Como criar scripts de shell simples no Linux

Como criar scripts de shell simples no Linux

Criar scripts de shell é uma das habilidades mais essenciais que os usuários do Linux devem ter na ponta dos dedos. Os scripts de shell desempenham um papel enorme na automação de tarefas repetitivas que, de outra forma, seriam tediosas executando linha por linha.

Neste tutorial, destacamos algumas das operações básicas de script de shell que todo usuário do Linux deve ter.

1. Crie um script de shell simples

Um script de shell é um arquivo que compreende ASCII texto. Começaremos criando um script de shell simples e, para fazer isso, usaremos um editor de texto. Existem vários editores de texto, tanto a linha de comando quanto baseados em GUI. Para este guia, usaremos o editor Vim.

Começaremos criando um script simples que exibe “Olá Mundo”Quando executado.

$ vim Olá.sh 

Cole o seguinte conteúdo no arquivo e salve.

#!/BIN/BASH # PRINT Hello World Message Echo "Hello World!" 

Vamos passar por cima da linha de scripts da shell por linha.

  • A primeira linha - #!/BIN/BASH - é conhecido como o cabeçalho do shebang. Este é um construto especial que indica qual programa será usado para interpretar o script. Nesse caso, este será o Bash concha indicada por /BIN/BASH. Existem outros idiomas de script, como Pitão que é denotado por #!/usr/bin/python3 e Perl cujo cabeçalho de shebang é denotado por #!/usr/bin/perl.
  • A segunda linha é um comentário. Um comentário é uma declaração que descreve o que um script de shell faz e não é executado quando o script é executado. Os comentários são sempre precedidos pelo sinal de hash #.
  • A última linha é o comando que imprime o 'Olá Mundo'Mensagem no terminal.

O próximo passo é fazer o script executável atribuindo permissão de execução usando o chmod comando como mostrado.

$ chmod +x olá.sh 

Por fim, execute o script do shell usando qualquer um dos comandos:

$ Bash Olá.sh ou $ ./olá.sh 
Crie Hello World Shell Script

2. Usando declarações condicionais para executar o código

Como outras linguagens de programação, Declarações condicionais são usados ​​em scripts bash para tomar decisões, com apenas uma ligeira variação na sintaxe. Nós vamos cobrir o se, if-else, e Elif Declarações condicionais.

Exemplo de uma instrução if apenas

O se A declaração pode ser usada para testar condições únicas ou múltiplas. Vamos começar com o uso fundamental do se declaração para testar uma única condição. O se a declaração é definida pelo Se… fi blocos.

se comando então declaração fi 

Vamos dar uma olhada no script da concha abaixo.

#!/bin/bash echo 'digite a pontuação' leia x if [[$ x == 70]]; Então ecoar!'fi 

O script do shell acima solicita ao usuário fornecer uma pontuação que seja armazenada em uma variável x. Se a pontuação corresponde a 70, O script retorna a saída "Bom trabalho!”. O operador de comparação == é usado para testar se a pontuação inserida, que é armazenada na variável x, é equivalente a 100.

se a instrução no script shell

Outros operadores de comparação que você pode usar incluem:

  • -Eq - Igual a
  • -ne - Não igual a
  • -lt - Menor que
  • -le - Menos que ou igual a
  • -lt - Menor que
  • -ge - Melhor que ou igual a

Por exemplo, o IF-statement Bloco abaixo impressões 'Trabalhe mais'Se a pontuação de entrada for um valor menor que 50.

se [[$ X -LT 50]]; Então eco 'trabalhe mais!'fi 
se a instrução no script shell

Exemplo de uma declaração if-else

Para situações em que você tem 2 resultados possíveis: - Se isso ou aquilo - a declaração if -else é útil.

se comando então declaração1 else declaração2 fi 

O script abaixo lê a pontuação de entrada e verifica se é maior ou igual a 70.

Se a pontuação for maior ou igual a 70, você consegue um 'Ótimo trabalho, você passou!' mensagem. No entanto, se a pontuação cair abaixo 70, a saída 'Você falhou'será impresso.

#!/bin/bash echo 'digite a pontuação' leia x if [[$ x -ge 70]]; Então ecoará o ótimo trabalho, você passou!'else eco' você falhou 'fi 
Declaração if-else no script de shell

Exemplo de uma declaração if-elif-else

Em cenários em que existem várias condições e resultados diferentes, o if-elif-else declaração é usada. Esta declaração pega o seguinte formato.

Se condição1 então declaração1 elif condição2 Então a declaração2 else declaração3 fi 

Por exemplo, temos um script para uma loteria que verifica se o número inserido é 90, 60 ou 30.

#!/bin/bash eco 'digite a pontuação' leia x if [[$ x -eq 90]]; então ecoar “você ganhou o primeiro prêmio” Elif [[$ x -eq 60]]; Então ecoarão “você ganhou o segundo prêmio” Elif [[$ x -eq 30]]; Então ecoar 
Declaração if-elif-else

3. Usando a instrução IF com e lógica

Você pode usar o se declaração ao lado do E operador lógico para executar uma tarefa se duas condições forem satisfeitas. O && O operador é usado para denotar o E lógica.

#!/bin/bash echo 'Por favor, digite seu user_id' leia user_id echo ', digite seu tag_no' leia tag_id se [[($ user_id == "Tecmint" && $ tag_id -eq 3990)]; Em seguida, ecoar 

5. Usando a instrução IF com ou lógica

Ao usar o OU lógica, isso é representado por || Símbolo, qualquer uma das condições precisa estar satisfeita com o script para fornecer os resultados esperados.

#!/bin/bash eco 'por favor, insira um número aleatório' Número de leitura se [[(número -eq 55 || número -eq 80)]]; Então ecoam parabéns! Você não ganhou 'eco' desculpe, tente novamente 'fi 
Se declaração ou lógica

Use construções de looping

Bash rotações Permitir que os usuários realizem uma série de tarefas até que um determinado resultado seja alcançado. Isso é útil na execução de tarefas repetitivas. Nesta seção, teremos uma espiada em alguns dos loops que você também encontraria em outras linguagens de programação.

Enquanto loop

Este é um dos loops mais fáceis de trabalhar. A sintaxe é bastante simples:

Enquanto os comandos são feitos 

O loop while abaixo lista todos os números de 1 a 10 quando executado.

#!/BIN/BASH # um contador de loop hall de laop 

Vamos dissircusar o loop while:

A variável contador é inicializado para 1. E enquanto a variável é menor ou igual a 10, O valor do contador será incrementado até que a condição seja satisfeita. A linha eco $ contador imprime todos os números de 1 a 10.

Enquanto loop no script de shell

Para loop

Como o tempo laço, a para loop é usado para executar o código iterativamente. EU.e. Repita a execução do código quantas vezes é definida pelo usuário.

A sintaxe é:

Para var em 1 2 3 4 5 n do command1 comando2 feito 

O para loop abaixo itera através de 1 a 10 e processa seus valores na tela.

Para loop no script de shell

Uma maneira melhor de conseguir isso é definir um intervalo usando os aparelhos duplos encaracolados como mostrado em vez de digitar todos os números.

#!O 

Parâmetros posicionais do Bash

Um parâmetro posicional é uma variável especial que é referenciada no script quando os valores são passados ​​no shell, mas não podem ser atribuídos. Parâmetros posicionais executados de $ 0 $ 1 $ 2 $ 3… para $ 9. Além de $ 9 valor, os parâmetros precisam ser fechados entre colchetes e.g $ 10, $ 11… e assim por diante.

Ao executar o script, o primeiro parâmetro posicional que é $ 0 leva o nome do script do shell. O $ 1 O parâmetro leva a primeira variável que é passada no terminal, $ 2 leva o segundo, $ 3 o terceiro e assim por diante.

Vamos criar um teste de script.sh como mostrado.

#!/bin/bash eco "O nome do script é:" $ 0 echo "meu primeiro nome é:" $ 1 echo "Meu segundo nome é:" $ 2 

Em seguida, execute o script e forneça o primeiro e o segundo nome como argumentos:

# teste bash.Sh James Kiarie 
Parâmetro posicional do bash

Da saída, podemos ver que a primeira variável impressa é o nome do script do shell, neste caso, teste.sh. Depois disso, os nomes são impressos correspondentes aos parâmetros posicionais definidos no script do shell.

Os parâmetros posicionais são úteis, pois ajudam você a personalizar os dados que estão sendo inseridos em vez de atribuir explicitamente um valor a uma variável.

Códigos de saída do comando shell

Vamos começar respondendo a uma pergunta simples, o que é um Código de saída?

Todo comando executado no shell por um usuário ou script de shell tem um status de saída. Um status de saída é um número inteiro.

Um status de saída de 0 implica que o comando executado com sucesso sem erros. Qualquer coisa entre 1 a 255 mostra que o comando falhou ou não executou com sucesso.

Para encontrar o status de saída de um comando, use o $? Variável de shell.

Um status de saída de 1 pontos para um erro geral ou quaisquer erros inadmissíveis, como editar arquivos sem permissões de sudo.

Um status de saída de 2 pontos para uso incorreto de um comando ou variável de shell incorporada.

O status de saída 127 aponta para um comando ilegal que geralmente produz o 'comando não encontrado'Erro.

Encontre o status de saída do comando

Processando a saída dos comandos do shell dentro de um script

Na script de bash, você pode armazenar a saída de um comando em uma variável para uso futuro. Isso também é chamado de substituição de comando do shell e pode ser alcançado das seguintes maneiras.

variável = $ (comando) ou variável = $ (/path/to/comando) ou variável = $ (argumento de comando 1 argumento 2…) 

Por exemplo, você pode armazenar o data comando em uma variável chamada hoje e ligue para o script do shell para revelar a data atual.

#!/bin/bash hoje = $ (data) eco “Hoje é $ hoje” 
Data de impressão usando script de shell

Vamos dar outro exemplo. Suponha que você queira encontrar os usuários de login válidos em seu sistema Linux. Como você iria fazer isso? Primeiro, a lista de todos os usuários (usuários de sistema, processo e login) é armazenada no /etc/passwd arquivo.

Para visualizar o arquivo, você precisaria usar o comando CAT. No entanto, para diminuir para fazer login nos usuários, use o comando grep para pesquisar usuários com o /BIN/BASH atribuir e usar o Corte -C 1-10 comando como mostrado para exibir os 10 primeiros caracteres dos nomes.

Nós armazenamos o comando gato para o login_users variável.

#!/BIN/BASH LOGIN_USERS = $ (CAT/ETC/PASSWD | GREP/BIN/BASH | CUT -C 1-10) ECHO 'Esta é a lista de usuários de login: eco $ login_users 
Lista de usuários conectados

Isso traz nosso tutorial sobre como criar scripts simples de shell para um fim. Esperamos que você tenha encontrado isso valioso.