8
 Comandos de controle shift O comando shift desloca a posição para a esquerda de todos os parâmetros armazenados na variável especial $*  e diminui o total de parâmetros armazenados na variável especial $#, caso não seja especificado a posição a ser descolocada o padrão é deslocar uma posição. Por exemplo, supondo que temos os parâmetros 1 2 3 4 5 ( $*) num total de 5 parâmetros ($#), usando o comando shift sem especificar a posição é descolocado uma posição, restando 4 parâmetros 2 3 4 5, após isso deslocando duas posições para a esquerda teremos apenas os parâmetros 4 e 5 e um total de 2 parâmetros. Sintaxe: shift posição Exemplo 1: O exemplo abaixo temos 5 parâmetros onde é deslocado uma posição e depois mais duas posições a esquerda, restando 2 parâmetros apenas. Executando o script passando os parâmetros $ ./script 1 2 3 4 5 #!/bin/bash echo "total de parâmetros iniciais: $#" echo "os parâmetros sao: $*" 1

Comandos Controle

Embed Size (px)

DESCRIPTION

Shell

Citation preview

  • Comandos de controle

    shift

    O comando shift desloca a posio para a esquerda de todos os parmetros armazenados navarivel especial $* e diminui o total de parmetros armazenados na varivel especial $#,caso no seja especificado a posio a ser descolocada o padro deslocar uma posio.

    Por exemplo, supondo que temos os parmetros 1 2 3 4 5 ($*) num total de 5 parmetros($#), usando o comando shift sem especificar a posio descolocado uma posio, restando4 parmetros 2 3 4 5, aps isso deslocando duas posies para a esquerda teremos apenasos parmetros 4 e 5 e um total de 2 parmetros.

    Sintaxe:

    shift posio

    Exemplo 1:

    O exemplo abaixo temos 5 parmetros onde deslocado uma posio e depois mais duasposies a esquerda, restando 2 parmetros apenas.

    Executando o script passando os parmetros

    $ ./script 1 2 3 4 5

    #!/bin/bashecho "total de parmetros iniciais: $#"echo "os parmetros sao: $*"

    1

  • shiftecho "total de parametros aps descolar uma posio: $#"echo "os parmetros restantes sao: $*"shift 2echo "total de parametros aps descolar duas posies: $#"echo "os parmetros restantes sao: $*"

    Sada do script

    total de parmetros iniciais: 5

    os parmetros so: 1 2 3 4 5

    total de parmetros aps descolar uma posio: 4

    os parmetros restantes so: 2 3 4 5

    total de parmetros aps descolar duas posies: 2

    os parmetros restantes so: 4 5

    Exemplo 2:

    O exemplo abaixo passado trs parmetros onde sero armazenados na varivel especial$#, enquanto for maior que 0 o script executado, sendo que a medida que cada linha doloop while executado diminudo uma posio a esquerda dos parmetros como mostra atabela abaixo:

    While 1posio

    2posio

    3 posio

    1 linha 1 2 32 linha 2 33 linha 3

    2

  • Executando o script passando os parmetros

    $ ./script 1 2 3

    #!/bin/bashwhile [ $# -gt 0 ]do

    echo "posio do parmetro aps descolocar uma posio: $1"shift

    done

    Sada do script

    posio do parmetro aps descolocar uma posio: 1

    posio do parmetro aps descolocar uma posio: 2

    posio do parmetro aps descolocar uma posio: 3

    exit

    Este comando para de executar comandos em um script onde informado um valor de statusde sada que pode ser 0 (status de comando com sucesso) ou um valor diferente de 0 (statusde erro). Caso no seja especificado um valor de status, utilizado o valor de status do ltimocomando executado.

    Sintaxe:

    3

  • shift status

    Exemplo:

    Executando o script passando os parmetros

    $ ./script restart

    #!/bin/bashif [ $* = "start" ]then

    echo "comando $* executado com sucesso !"exit 0 # status de sucesso

    elif [ $* = "stop" ]then

    echo "comando $* executado com sucesso !"exit # status de sucesso

    elseecho "Use: $0 (start|stop)"exit 1 # status de erro

    fi

    Sada do script

    Use: (start|stop) em ./teste

    trap

    Executa um ou mais comandos aps receber um sinal de sada, que pode ser os principaisabaixo:

    4

  • Sinal Significado0 Sada normal de um programa (sada do shell)1 Kill -HUP (mata processos)3 Quit (Sai)2 Interrupo (Control + C)9 Kill (mata processos)

    15 Kill (mata processos)

    Sintaxe:

    trap `comando1; comando2;` sinal1 sinal2

    Exemplo:

    Crie o script abaixo

    #!/bin/bashwhile truedo

    trap `ls -R /; exit;` 0 1 2 9 15done

    Execute o script e envie um sinal para o comando trap, pressione Control + C que equivaleao sinal 2 (Interrupo) ou abra um terminal e execute o comando ps e depois kill ou killallespecificando o nmero ou nome do processo e depois repare o script ser interrompido.

    $ ./script

    $ ps -aux | grep script

    5

  • aluno1 6795 4.9 16.0 74424 71900 pts/0 R+ 17:53 0:09 /bin/bash ./script

    aluno1 6864 0.0 0.1 3020 784 pts/1 S+ 17:56 0:00 grep script

    $ kill 6795ou

    $ killall script

    break

    Encerra um comando de repetio com loop (for, while, until ou select) aps uma ou maisrepeties.

    Exemplo:

    No exemplo abaixo a varivel x inicia com o valor inicial 0, aps isso feito um teste lgicoverificando se o valor da varivel x menor ou igual a 10, e depois feito outro teste lgicoverificando se a varivel x igual a 5, caso seja verdadeiro o comando break executado,caso contrrio o valor de sada da varivel x exibido na tela.

    #!/bin/bashfor((x=0; x

  • 01

    2

    3

    4

    continue

    Este comando faz com que o comando de repetio em loop v direto para o testecondicional, caso seja verdadeiro, o comando executado novamente

    Exemplo:

    No exemplo abaixo feito um teste lgico verificando se a varivel x menor que 5, casoseja verdadeiro, o comando continue executado, caso contrrio, o loop continua suaexecuo e a varivel x incrementada de 1 depois que torna-se maior que 5 aps o testecondicional.

    #!/bin/bashx=0while truedo

    x=`expr $x + 1`

    if [ $x -lt 5 ]then

    echo "valor de x antes do teste condicional $x"continue

    elseecho ""x=`expr $x + 1`echo "valor de x depois do teste condicional $x"

    7

  • breakfi

    done

    Sada do script

    valor de x antes do teste condicional 1

    valor de x antes do teste condicional 2

    valor de x antes do teste condicional 3

    valor de x antes do teste condicional 4

    valor de x depois do teste condicional 6

    8

    comandos_controle