Exercícios Resolvidos
                                      ­Shell Script­
   1. Crie uma Script que lê 2 números e determine a adição e multiplicação destes.

      #!/bin/bash

      echo "Introduza o 1o. numero"
      read n1
      echo "Introduza o 2o. numero"
      read n2

      echo $[ $n1 + $n2 ]
      echo $[ $n1 * $n2 ]

   2. Crie uma Script que lê um numero e determine se o mesmo é par ou ímpar.
      #!/bin/bash

      echo "Introduza o numero"
      read no

      if [ $(($no%2)) = 0 ]
      then
      echo "Numero par"
      else
      echo "Numero impar"
      fi 

   3. Crie uma Script que imprime números de 1 a 5 usando ciclo for.
      #!/bin/sh
      for i in 1 2 3 4 5
      do
      echo "Numero $i"
      done

   4. Crie uma Script usando ciclo for que imprime valores de 10  a 0;
      #!/bin/bash

      for (( i=10; i>=0; i­­ ))
      do
      echo $i
      done

   5. Script que cria directórios de acordo com um número de directórios especificado pelo usuário 
      bem como as letras iniciais dos directórios a criar.

Sistema Operativos Avançados                                                  dr. Jonnathan Guambe
#!/bin/bash
      echo "Introduza o nr. de directorios a criar"
      read nrDirs

      echo "Introduza as letras iniciais dos directorios a criar"
      read ltIni

      #seq 2 $nrDirs ­ cria uma sequencia de 1 ao numero 
      #de directorios especificados pelo usuario
      for ndir in `seq 1 $nrDirs`; do
      mkdir $ltIni$ndir
      done

   6. Crie um script, que ao ser executado liste as seguintes opções: 
      Solicite o nome do directório desejado, entre nesse directório e liste seu conteúdo. 
      1 ­ Solicita o nome do arquivo a ser impresso. 
      2 ­ Solicita o nome do arquivo a ser editado. 
      3 ­ Solicita o nome do arquivo a ser excluído. 
      4 ­ Para sair do script.
              #!/bin/bash
              linha="­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­"
              echo "Introduza o directorio a operar"
              read dir

              echo "­­­­­Entrando no directorio­­­­"
              cd $dir
              echo "­­­­­Listando conteudos­­­­"
              ls $dir
              echo "­­­­­Fim da Listagem­­­­"

              echo "­­­­­­­­­­­­­­Escolha sua opcao­­­­­­­­­­­­­"
              echo $linha
              echo "1 ­ Mostrar conteudo de um ficheiro"
              echo "2 ­ Editar um ficheiro"
              echo "3 ­ Remover ficheiro"
              echo $linha
              read opcao
              echo ""

              echo "Indique o nome do ficheiro"
              read fich

              case $opcao in


Sistema Operativos Avançados                                                      dr. Jonnathan Guambe
1) cat $fich
                      ;;
                      2) gedit $fich
                      ;;
                      3) rm $fich
                      ;;
                      *)
                      echo "Opcao invalida"
               esac


    7. Escreva um conjunto de scripts para efectuar gestão de remoção de arquivos. A script del deve 
       mover os arquivos passados como parâmetros para um directório lixeira; o script undel deve 
       mover arquivos da lixeira para o directório corrente e o script lsdel deve listar o conteúdo da 
       lixeira. O directório lixeira deve ser definido através da variável de ambiente $LIXEIRA. 
       R:
       Antes de correr as scripts, garantir que o directório que servira como lixeira existe e definir a 
variável de ambiente executando na linha de comando o seguinte: export LIXEIRA=/tmp/lixo
       Script del.sh:
       #!/bin/bash

       #$@ ­ Serve para buscar todos argumentos de uma única vez
       #$LIXEIRA – Variável de ambiente definido anteriormente
       mv $@ $LIXEIRA

       ==>Exemplo da execução do exercício anterior executando na linha de comando:
       $touch test{1,2,3,7,9}.txt
       $mkdir /tmp/lixo
       $export LIXEIRA=/tmp/lixo
       $./del.sh test1.txt test3.txt test9.txt

       Script undel.sh:
       #!/bin/bash

       #$@ ­ Serve para buscar todos argumentos de uma única vez
       #$LIXEIRA – Variável de ambiente definido anteriormente
       #. ­ refere ao directório local
       mv $LIXEIRA/* .

       Script lsdel.sh:
       #!/bin/bash

       #$@ ­ Serve para buscar todos argumentos de uma única vez
       #$LIXEIRA – Variável de ambiente definido anteriormente


Sistema Operativos Avançados                                                       dr. Jonnathan Guambe
ls ­lh $LIXEIRA




Sistema Operativos Avançados    dr. Jonnathan Guambe

Soa cap2 exercicios resolvidos shell

  • 1.
    Exercícios Resolvidos ­Shell Script­ 1. Crie uma Script que lê 2 números e determine a adição e multiplicação destes. #!/bin/bash echo "Introduza o 1o. numero" read n1 echo "Introduza o 2o. numero" read n2 echo $[ $n1 + $n2 ] echo $[ $n1 * $n2 ] 2. Crie uma Script que lê um numero e determine se o mesmo é par ou ímpar. #!/bin/bash echo "Introduza o numero" read no if [ $(($no%2)) = 0 ] then echo "Numero par" else echo "Numero impar" fi  3. Crie uma Script que imprime números de 1 a 5 usando ciclo for. #!/bin/sh for i in 1 2 3 4 5 do echo "Numero $i" done 4. Crie uma Script usando ciclo for que imprime valores de 10  a 0; #!/bin/bash for (( i=10; i>=0; i­­ )) do echo $i done 5. Script que cria directórios de acordo com um número de directórios especificado pelo usuário  bem como as letras iniciais dos directórios a criar. Sistema Operativos Avançados  dr. Jonnathan Guambe
  • 2.
    #!/bin/bash echo "Introduza o nr. de directorios a criar" read nrDirs echo "Introduza as letras iniciais dos directorios a criar" read ltIni #seq 2 $nrDirs ­ cria uma sequencia de 1 ao numero  #de directorios especificados pelo usuario for ndir in `seq 1 $nrDirs`; do mkdir $ltIni$ndir done 6. Crie um script, que ao ser executado liste as seguintes opções:  Solicite o nome do directório desejado, entre nesse directório e liste seu conteúdo.  1 ­ Solicita o nome do arquivo a ser impresso.  2 ­ Solicita o nome do arquivo a ser editado.  3 ­ Solicita o nome do arquivo a ser excluído.  4 ­ Para sair do script. #!/bin/bash linha="­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­" echo "Introduza o directorio a operar" read dir echo "­­­­­Entrando no directorio­­­­" cd $dir echo "­­­­­Listando conteudos­­­­" ls $dir echo "­­­­­Fim da Listagem­­­­" echo "­­­­­­­­­­­­­­Escolha sua opcao­­­­­­­­­­­­­" echo $linha echo "1 ­ Mostrar conteudo de um ficheiro" echo "2 ­ Editar um ficheiro" echo "3 ­ Remover ficheiro" echo $linha read opcao echo "" echo "Indique o nome do ficheiro" read fich case $opcao in Sistema Operativos Avançados  dr. Jonnathan Guambe
  • 3.
    1) cat $fich ;; 2) gedit $fich ;; 3) rm $fich ;; *) echo "Opcao invalida" esac 7. Escreva um conjunto de scripts para efectuar gestão de remoção de arquivos. A script del deve  mover os arquivos passados como parâmetros para um directório lixeira; o script undel deve  mover arquivos da lixeira para o directório corrente e o script lsdel deve listar o conteúdo da  lixeira. O directório lixeira deve ser definido através da variável de ambiente $LIXEIRA.  R: Antes de correr as scripts, garantir que o directório que servira como lixeira existe e definir a  variável de ambiente executando na linha de comando o seguinte: export LIXEIRA=/tmp/lixo Script del.sh: #!/bin/bash #$@ ­ Serve para buscar todos argumentos de uma única vez #$LIXEIRA – Variável de ambiente definido anteriormente mv $@ $LIXEIRA ==>Exemplo da execução do exercício anterior executando na linha de comando: $touch test{1,2,3,7,9}.txt $mkdir /tmp/lixo $export LIXEIRA=/tmp/lixo $./del.sh test1.txt test3.txt test9.txt Script undel.sh: #!/bin/bash #$@ ­ Serve para buscar todos argumentos de uma única vez #$LIXEIRA – Variável de ambiente definido anteriormente #. ­ refere ao directório local mv $LIXEIRA/* . Script lsdel.sh: #!/bin/bash #$@ ­ Serve para buscar todos argumentos de uma única vez #$LIXEIRA – Variável de ambiente definido anteriormente Sistema Operativos Avançados  dr. Jonnathan Guambe
  • 4.