Os parâmetros posicionais
São simplesmente os argumentos passados em parâmetros na linha de comando, na invocação de um script. Eles são, então, atribuídos nas variáveis reservadas 1,2,3,...9,10,11,... e podem ser chamados com a ajuda das expressões $1,$2...${10},${11}...Observação: o shell Bourne é limitado aos parâmetros de 0 a 9.
Exemplo 1
Eis um pequeno script que se contenta de afixar certos argumentos passados em parâmetros em função de sua posição.#!/bin/bash # affiche_param.sh echo "O 1° parâmetro é: $1" echo "O 3° parâmetro é: $3" echo "O 10° parâmetro é: ${10}" echo "Le 15ème parâmetro est : ${15}"
Basta então de evocar o script lhe passando um certo numero de parâmetros :
./affiche_param.sh 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 Le 1° parâmetro é : 1 Le 3° parâmetro é : 3 Le 10° parâmetro é : 10 Le 15° parâmetro é : 15ou ainda:
./affiche_param.sh un 2 trois 4 5 6 7 8 9 dix 11 12 13 14 quinze 16 17 Le 1° parâmetro é : um Le 3° parâmetro é : três Le 10° parâmetro é : dez Le 15° parâmetro é : quinze
Se alguns parâmetros contém características especiais ou espaços, é preciso então os cotar:
./affiche_param.sh un 2 "le 3°" 4 5 6 7 8 9 dez 11 12 13 14 "o 15°" 16 17 O 1° parâmetro é : um O 3° parâmetro é : o 3° O 10° parâmetro é: dix O 15° parâmetro é: le 15°
Os parâmetros especiais
São também variáveis reservadas que permitem para alguns efetuar tratamentos nos parâmetros . Estes parâmetros são os seguintes:$0 Contém o nome do script tal como ele foi invocado. $*O conjunto dos parâmetros na forma de um só argumento. $@ O conjunto dos argumentos, um argumento por parâmetro $# O número de parâmetros passados para o script $? Le code volta do último comando $$ Le PID su shell que se executa o script $! Le PID do último processo lançado em último plano
Exemplo 2
Eis outro pequeno script que instala o conjunto dos parâmetros especiais vistos acima#!/bin/bash # affiche_param_2.sh # Afixagem do nome do script echo "O nome de meu script é : $0" # Afixagem do número de parâmetros echo "Você passou $# parâmetros" # Lista dos parâmetros (um só argumento) for param in "$*" do echo "Eis a lista dos parâmetros (um só argumento) : $param" done # Lista dos parâmetros (um parâmetro por argumento) echo " Eis a lista dos parâmetros (um parâmetro por argumento) :" for param in "$@" do echo -e "\tParâmetro : $param" done # Afixagem do processo echo "O PID o shell que executa o script é : $$" # Execução de um comando que se executa em plano de fundo sleep 100 & # Afixagem do processo lançado em plano de fundo echo "O PID do último comando em plano de fundo é : $!" # Afixagem do código retorno do último "echo" echo "O código retorno do comando precedente é : $?" # Geração de um erro echo "Geração de um erro..." # Afixagem da mau comando echo "ls /etc/password 2>/dev/null" ls /etc/password 2>/dev/null # Afixagem do código retorno do último comando echo "O código retorno do comando precedente é : $?" exitO que resulta com a invocação seguinte:
./affiche_param_2.sh 1 2 3 quatro 5 six O nome de meu script é: ./affiche_param_2.sh Você passou 6 parâmetros Eis a lista dos parâmetros (um argumento somente) : 1 2 3 quatro 5 six Eis a lista dos parâmetros (um parâmetro por argumento) : Parâmetro : 1 Parâmetro : 2 Parâmetro : 3 Parâmetro : quatro Parâmetro : 5 Parâmetro : six O PID do shell que executa o script é: 6165 O PID do último comando executado em plano de fundo: 6166 O código retorno do comando precedente é: 0 Geração de um erro... ls /etc/password 2>/dev/null O código de retorno do comando precedente é: 1
Inicializar os parâmetros
- O comando "set" -
É possível afetar diretamente parâmetros au shell graças ao comando "set".Um simples comando como:
set param1 param2 param3
inicializara automaticamente os parâmetros posicionais "$1,$2,$3" com os valores "param1,param2,param3", apagando desta forma os antigos valores se por acaso eles existirem. Os parâmetros especiais "#,* e @" são automaticamente atualizados como conseqüência. Exemplos
$ set param1 param2 param3 $ echo "Número de parâmetros : $#" Número de parâmetros ll: 3 $ echo O segundo parâmetro é : $2" O 2° parâmetro é : param2 $ echo Os parâmetros são : $@" Os parâmetros são: param1 param2 param3 $ set pêssego maçã $ echo " Número de parâmetros: $#" Número de parâmetros : 2 $ echo "Os parâmetros são : $@" Os parâmetros são : pêssego maçã
Esta funcionalidade pode mostrar-se útil no tratamento de arquivos linha
por linha para isolar cada palavra (campo), e de formatar a saida.
$ IFS=":"; set $(grep $USER /etc/passwd) $ echo -e "Login :\t$1\nNom :\t$5\nID :\t$3\nGroup :\t$4\nShell :\t$7" Login : jp Nome : Jean-Philippe ID : 500 Group : 500 Shell : /bin/bash
- O comando "shift" -
O comando interno "shift" permite quanto à ele defasar os parâmetros.O valor do 1° parâmetro ($1) é substituído pelo valor do 2° parâmetro ($2), aquela do 20 parâmetro ($2) por aquele do 3° ($3), etc...
Pode-se indicar um argumento (shift n) o número de (posiçéoes) que é preciso defasar os parâmetros.
Exemple 3
Veja uma instalação do emprego do comando interno shift.#!/bin/bash # decale_param.sh echo echo " Número de parâmetros: $#" echo "O 1° parâmetro é: $1" echo "O 3° parâmetro é: $3" echo "O 6° parâmetro é: $6" echo "O 10° parâmetro é: ${10}" echo "=============================================" echo " Defasagem de um passo com o comando \"shift\"" shift echo " Número de parâmetros: $#" echo "O 1° parâmetro é: $1" echo "O 3° parâmetro é: $3" echo "O 6° parâmetro é: $6" echo "O 10° parâmetro é: ${10}" echo "=============================================" echo " Defasagem de quatro passos com o comando \"shift 4\"" shift 4 echo "Número de parâmetros: $#" echo "O 1° parâmetro é: $1" echo "O 3° parâmetro é: $3" echo "O 6° parâmetro é: $6" echo "O 10° parâmetro é: ${10}" echoE seu resultado:
./decale_param.sh 1 2 3 4 5 6 7 8 9 10 Número de parâmetros: 10 O 1° parâmetro é: 1 O 3° parâmetro é: 3 O 6° parâmetro é: 6 O 10° parâmetro é: 10 ============================================= Defasagem de um passo com o comando "shift" Número de parâmetros : 9 O 1° parâmetro é: 2 O 3° parâmetro é: 4 O 6° parâmetro é: 7 O 10° parâmetro é: ============================================= Defasagem de quatro passos com o comando "shift 4" Número de parâmetros : 5 O 1° parâmetro é: 6 O 3° parâmetro é: 8 O 6° parâmetro é: O 10° parâmetro é:
Nenhum comentário:
Postar um comentário