shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Dúvidas com o comando shift


From: Gustavo S. L.
Subject: Re: [shell-script] Dúvidas com o comando shift
Date: Fri, 26 Dec 2014 01:50:04 -0200

Oi Ricardo, tente assim:

echo "O programa "$0" recebeu "$#" parametros:"
echo "11ª parm -> ${11}"
shift
echo "2ª parm -> $1"
shift 2
echo "4ª parm -> $1"

e aproveitando que está estudando parâmetros com shift, se me permite uma sugestão, caso ainda não conheça, segue:

i=1
while [ -n "$1" ]
do
echo "o parâmetro $i tem o valor $1"
i=$[ $i + 1 ]
shift
done


Em 17 de dezembro de 2014 20:54, 'Julio C. Neves' address@hidden [shell-script] <address@hidden> escreveu:
 

De forma beeeem simples: no 1o. shift vc matou 'passando'. No shift 2 vc matou 'parametros para' e então só ficou com o 'teste'. E prompt ;)

Em 17/12/2014 17:13, "Ricardo Tweeg address@hidden [shell-script]" <address@hidden> escreveu:

 

Boa tarde turma.


Vejam o script abaixo:
***************************

#!/bin/bash
# Programa para testar passagem de parametros (teste03)
echo
echo O programa \"$0\" recebeu \"$#\" parametros:
echo "11ª parm -> $11"
shift
echo "2ª parm -> $1"
shift 2
echo "4ª parm -> $1"

Executei o programa e tive a seguinte saída:
********************************************************

$ ./teste03 passando parametros para testar

O programa "./teste03" recebeu "4" parametros:
11ª parm -> passando1
2ª parm -> parametros
4ª parm -> testar


Dúvida:
*********

O comando "shift 2" (o "n" pode assumir qualquer valor) despreza os "n" primeiros parâmetros.
Sendo assim, já que eu coloquei "shift 2", eu estou desprezando os dois primeiros parâmetros que passei na linha de comando (passando parametros).

Em seguida eu executo um echo "4ª parm -> $1".

Já que eu desprezei os 2 primeiros parâmetros, o echo "4ª parm -> $1" não deveria mostrar o próximo parâmetro que é a palavra "para"?
Eu não entendi o motivo dele não ter mostrado o terceiro parâmetro (para) e no seu lugar ter mostrado o "testar" que é o quarto parâmetro.

Obrigado por qualquer ajuda.

Ricardo 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]