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

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

Re: [shell-script] acessar parametro no laço for


From: Julio C. Neves
Subject: Re: [shell-script] acessar parametro no laço for
Date: Mon, 26 Nov 2012 19:47:06 -0200

Fala Emerson,
a sua resposta tem uma pequena imprecisão e por isso quero chamar a atenção
do grupo pq é algo mais ou menos frequente. Se, como vc propôs, fizer:

for a in $*; do
    echo $a # 'a' é cada parâmetro (primeiro, segundo, terceiro, etc)
done

e passar 1 parm com brancos, isso fica furado. Veja que vou passar 2 parms
para o bash e executar seu cmd no prompt:

$ set - '1º Parm' '2º Parm'
$ echo $0     #Nome do prog
bash
$ echo $#     #Qtd de parms
2
$ echo $*     #Todos os parms
1º Parm 2º Parm
$ for a in $*; do
>     echo $a # 'a' é cada parâmetro (primeiro, segundo, terceiro, etc)
> done
1º
Parm
2º
Parm

Como disse, deu zebra pq quebrou tudo nos brancos. O certo seria usar @$@
entre aspas. Veja:

$ for a in "$@"; do
>     echo $a # 'a' é cada parâmetro (primeiro, segundo, terceiro, etc)
> done
1º Parm
2º Parm

Ahhh! A outra solução (usando o $#) ficaria melhor assim:
$ for ((i=1; i<=$#; i++))
> {
>     echo ${!i}
> }
1º Parm
2º Parm

É só medir os tempos que vc verá. Assim usei somente bash (builtin). Nenhum
cmd externo.

Abcs,
Julio

*
*



Em 26 de novembro de 2012 09:30, Emerson Domingues Souto - H2M <
address@hidden> escreveu:

> **
>
>
> for n in `seq $#`; do
>
> eval echo \$$n # 'n' representa o número do parâmetro (1,2,3, etc) que
> graças ao eval e ao duplo $ será usado como uma variável de nome variado
>
> done
>
> OU
>
> for a in $*; do
>
> echo $a # 'a' é cada parâmetro (primeiro, segundo, terceiro, etc)
>
> done
>
> Emerson Domingues Souto
>
> Tecnologia da Informação
>
> Marítima Seguros S/A
>
> Fone: 11 3156-1752
>
> De: address@hidden [mailto:
> address@hidden] Em nome de Anderson Junior
> Enviada em: segunda-feira, 26 de novembro de 2012 01:28
> Para: address@hidden
> Assunto: [shell-script] acessar parametro no laço for
>
> eu de novo aqui, é o seguinte eu preciso acessar os parametros, mas sem
> saber quais parametros foram passados, vou tentar explicar
>
> os parametros são interpretados pelas variaveis especiais
> $1 $2 $3 e assim por diante, quero acessar elas tipo em um comando for
>
> for((I=1; I<=$#; I++))
> {
> echo $[$I] #aqui que eu não sei como acessar elas usando o contador do for
> }
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>  
>


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

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