• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

pebat

[Shell script] Programaçao da shell linux (parte I)

8 mensagens neste tópico

Programação em Shell-Script

Introdução

Como você já deve saber, a shell do Linux é uma poderosa ferramenta que traz ao utilizador toda a flexibilidade dos sistemas Unix e todos seus comandos.  No meu caso vou explicar um pouco de scripts-shell do bash.

Muita gente não sabe que o bash tem uma poderosa linguagem de script embutida nele. Diversas pessoas utilizam-se desta linguagem para facilitar a realização de inúmeras tarefas administrativas em um sistema Linux, ou até mesmo para criar seus próprios programas! Para quem gosta de usar a criatividade para criar coisas e facilitar o uso do sistema no dia-a-dia, o shell-script é um prato cheio para começar.

Costumo indicar para quem está a começar na  programação à dar uma olhada em shell-script. E faço isso porque o shell-script é bastante simples. Porque te da uma boa noção do basico da logica da programaçao. Combinando todos os comandos avançados do Linux, conseguem fazer coisas mto uteis e aprender muito sobre a logica da programaçao.

Criaçao de um programa da shell (bash)

    Programa da shell  - programa constituido por comandos Unix (bash file, shell script)

Para criar um programa da shell introduza os vários  comandos Unix num ficheiro, umas das vantagens do shell-script e nao precisar de ser compilado basta escrever o texto e ja esta, como por exemplo:

       

            
            #!/bin/bash   ---> inicio do shell script sempre que virem isto assim num ficheiro de Linux ou Unix ja sabem que estao perante um shell-script
             echo "ola" --> este echo ja vos deve ser familiar e usado no Bash de Dos ou mesmo no PHP ser para escrever na consola neste caso
             echo "ola"
             echo "ola"
          

  Depois da criaçao do programa é necessario colocar permissões de execuçao no ficheiro.

         

chmod u+x prog 

  Depois de dar premisao a ficheiros basta fazer ./nome file

Variaveis nos ficheiros da shell

  Exemplo simples de utilização de uma variavel. Atençao que nao devem ser utilizados espaços entre a variavel, o sinal de igual e o valor atribuido:

       

             #!/bin/bash
              nome="Pebat" ----> variavel que lhe atribui o valor do meu nick
              echo $nome  ---> aqui vamos mostra na shell o valor da variavel
         

 

  As variaveis nos ficheiros da shell nao precisa, de ser declaradas e sao todas do tipo string.

  Exemplos de variaveis ja defenidas no sistema: PATH, HOME. Execute os seguintes comandos na linha de comandos:

        echo $HOME

        echo $PATH

     

    o comando set permite visualizar todas as variaveis dos sistema.

Argumentos dos programas da shell

  Um programa da shell pode receber argumentos atraves da linha de comnados. O programa acede a estes valores ataves dos parametros posicionais: $1, $2, $3, ...

 

O programa seguinte mostra no ecrã o paramentro passado na linha de comando

     

         #!/bin/bash
         echo "ola" $1
      

 

  como executar este programa:  chmod u+x nome(o nome do meu ficheiro)

                                                        depois ./nome pebat

                                                        ira aparecer ola pebat

                                                       

Exemplo de um ficheiro da shell que mostra os 9 argumentos passados atraves da linha de comando

 

     #!/bin/bash
      echo "O primeiro parametro e " $1
      echo "..." $2
      echo "..." $3
      echo "..." $4
      echo "..." $5
      echo "..." $6
      echo "..." $7
      echo "..." $8
      echo "..." $9
   

Semelhate ao anterior mas neste caso os paramentros sao todos escritos numa so linha

   

      #!/bin/bash
       echo $1 $2 $3 $4 $5 $6 $7 $8 $9
    

Igual ao anterior. A variavel $* contem todos os argumentos.

 

   #!/bin/bash
  echo $*
   

Exemplo de um programa da shell que mostra o nome do proprio programa e o numero de argumentos deste:

 

       #!/bin/bash
        echo "o nome deste ficheiro da shell e " $0
        echo "o numero de argumentos e " $1 
   

Quando o progama recebe mais do que 9 paramentros entao deve ser utilizado o comando shift para o acesso aos parametros adicionais.

FIm da primeira parte

Espero que gostem....

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tudo aquilo que aprendi aqui há uns tempos sobre bash scripting... :)

Bom tutorial!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Viva

parabens pelo tutorial!!

gostava de acrescentar o seguinte :

Código

GeSHi (bash):

      #!/bin/bash

        echo "o nome deste ficheiro da shell e " $0

        echo "o numero de argumentos e " $1

Created by GeSHI 1.0.7.5

Quando o progama recebe mais do que 9 paramentros entao deve ser utilizado o comando shift para o acesso aos parametros adicionais.

nao precisas de usar o shift para aceder a parameteros maiores que  9, podes por exemplo usar ${15} para aceder ao 15 parametero

#!/bin/bash  ---> inicio do shell script sempre que virem isto assim num ficheiro de Linux ou Unix ja sabem que estao perante um shell-script

gostava de acrescentar que o #! (hash-bang) serve para indicar ao kernel qual o programa que ele deve usar para correr o script, por exemplo é possivel indicar que o script é para correr com o perl .

Outra particularidade é que é possivel passar parameteros para o programa que vai correr o script, alias tudo o que estiver nessa linha e que nao seja comentario e passado ao programa

sven

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Bom tutorial :)

Apesar de eu já ter umas noções de Bash scripting que vieram do python o tutorial dá bastante jeito :)

Prova disso mesmo é que vim aqui verificar se já tinhas falado dos ifs :D Tive de fazer um pequeno script por causa do wireless do portatil velho e por isso lá vim eu :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu gostava era de ter uma script de nautilus que me eliminassem o ficheiro actual selecionado em root, (usando o gksudo para perdir a pass) :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora