Shell scripting (bash)

Um script shell é um arquivo texto com uma lista de comandos shell e é executado como um programa para executar uma tarefa ou um conjunto de tarefas. O objectivo principal de um script shell é automatizar tarefas e poupar tempo. É importante compreender a estrutura básica de um script shell, uma vez que é você interage com um cluster de computação através de scripts shell (Veja o próximo capítulo sobre Grid Engine)

o que é Bash ?

Existem muitos shells diferentes disponíveis em sistemas semelhantes ao Unix. O Bourne Again Shell (Bash) é um deles, ele é o shell padrão em sistemas GNU/Linux. Ele tem algumas vantagens para outros shells e é praticamente o shell padrão, e mostraremos como usá-lo para scripts abaixo.

Escrever um simples script bash shell

Um script shell básico é apenas uma série de comandos. É isso que mostraremos a seguir.

Deixe-nos escrever um script simples que saia “olá mundo” na tela usando o comando echo. Vamos guardar o ficheiro de texto como myScript.sh

 #!/bin/bash echo Hello World

executando uma sintaxe de script de shell:bash your-script-name. No nosso caso, escrevemos:

$ bash myScript.sh Hello World

executar um exemplo mais complicado

Vamos escrever um script um pouco mais complicado usando mais dos comandos da shell. O script usa o comando ls para listar os arquivos e usa o comando wc -l que conta o número de linhas em um dado arquivo ou entrada padrão. Neste caso, wc -l conta o número de linhas na saída de ls -l. Tudo isto conseguido usando o pipe |.

contentes do script.sh:

 #!/bin/bash echo here are the list of files ls -l echo The number of files: ls -l | wc -l 

Podemos executá-lo da seguinte forma:

$ bash script.sh

variáveis em scripts bash

Também se pode usar variáveis em scripts bash. Não existem tipos de dados para variáveis. Uma variável em bash pode conter qualquer um dos seguintes: um número, um caractere ou uma string de caracteres.

Você não precisa declarar uma variável, apenas atribuir um valor à sua referência irá criá-la.

Agora vamos criar um script simples com uma variável. Vamos atribuir Hello world string a essa variável e imprimir essa variável com echo.

 #!/bin/bash VAR="Hello world" echo $VAR 

Ao atribuir a variável não usamos o sinal $, mas ao usar a variável tivemos que usar o sinal $ sign.

argumentos de linha de comando em scripts bash

O script também pode ter argumentos de linha de comando. Aqui nós modificamos o script que lista o arquivo para pegar um argumento de linha de comando. O argumento será um caminho para um directório.

contents of script2.sh:

 #!/bin/bash VAR= echo here are the list of files ls -l $VAR echo The number of files: ls -l $VAR | wc -l 

Aqui está como você executa o script:

$ bash script2.sh /home/user/project

Os argumentos são armazenados em variáveis com um número na ordem do argumento começando em 1

  • Primeiro Argumento: $1
  • Segundo Argumento: $2
  • e assim por diante…

No nosso caso, corresponde a /home/user/project.

Operações aritméticas bash scripts

Operações aritméticas sobre números inteiros em bash são feitas no seguinte formato:

#!/bin/bash x=6 y=2 $((10 - 5)) $((x-y)) echo $((x-y)) echo $((10-5))

Você também pode copiar colar estes comandos para o console para ver como eles funcionam. Os comandos echo devem sair 4 e 5.

A aritmética da barra não suporta pontos flutuantes (ex. 1.3 -1 operação não funcionará em bash), você precisa usar o comando bc. Veja este exemplo de stackOverflow para um exemplo de como usar bc.

Looping over files

Se você está tentando automatizar uma tarefa usando bash scripting, é muito provável que você tenha que aplicar certos comandos em cada arquivo em um diretório. Isto pode ser conseguido com caracteres wild* e for loops. O seguinte script armazena todos os ficheiros ‘.txt’ em /path/to directório em FILES variável. Depois, para cada ficheiro calcula o número de linhas e saídas que com wc -l comando.

#!/bin/bash FILES=/path/to/*.txt for f in $FILES do echo "Processing $f file..." # count number of lines and output that for file $f wc -l $f done 

Mais em bash scripts

Pode escrever scripts shell ainda mais complicados usando estruturas de controlo (if/else, for/while loops) e conseguir muito usando apenas o script shell, mas isso está para além do âmbito do documento. Veja os links abaixo se você quiser melhorar na escrita de shell scripts.

  • http://www.freeos.com/guides/lsst/
  • http://www.tldp.org/LDP/Bash-Beginners-Guide/html/

Deixe uma resposta

O seu endereço de email não será publicado.