[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] Parametros em script
From: |
Thobias Salazar Trevisan |
Subject: |
Re: [shell-script] Parametros em script |
Date: |
Fri, 30 May 2003 20:13:43 -0300 (BRT) |
ae frederico,
On Fri, 30 May 2003, Frederico Argolo wrote:
> Valeu novamente pela atencao, mas o seu script
> funcionou, mas qndo vou aplicar a ideia no meu nao
> funciona. Nao entendi direito o OPTIND.
OPTIND tem o indice do proximo parametro que sera processado.
por isto nao estao funcionado o seu script. Voce esta fazendo o
shit a cada opcao do getopts.
.....
> $ ./script -t teste -f teste arq
> entrou no t
> Cifrao 1: -f
sim, apos executar o getopts para o -t, o proximo parametro sera
o -f, como voce faz o shift ele vai virar $1
> $ ./script -f teste -t teste arq
> entrou no f
> Cifrao 1: -t
>
> Repare que tem algo bem errado. Acho q nao entendi
> direito mesmo o OPTIND.
Voce esta processando os parametros e realizando as operacoes
referente a ele no mesmo lugar. eh melhor voce passar o getops
para pegar as opcoes que o usuario passou na linha de comando e
depois fazer o script para cada um.
se voce quer manter como esta o seu script e
se voce passa sempre *um* arquivo como parametro. pode usar algo
assim pega pegar o nome dele. Tire o shift $((OPTIND -1)).
Coloque isto antes do getopts.
FILE=$(eval echo \$$#)
Assim, em FILE vai ter o ultimo parametro passado na linha de
comando.
$ cat y
#!/bin/bash
FILE=$(eval echo \$$#)
echo arquivo = $FILE
$ ./y um dois tres file
arquivo = file
$ ./y file
arquivo = file
$ ./y -t teste -f x file
arquivo = file
assim eh so usar esta variavel quando quiser se referenciar ao
arquivo passado como ultimo parametro
Ou faca algo assim:
$ cat x
#!/bin/bash
while getopts t:f: opt; do
case $opt in
t)
COM_T="x"
;;
f)
COM_F="x"
;;
esac
done
shift $(($OPTIND - 1))
echo "Cifrao 1: $1"
[ $COM_T ] && echo faz o necessario, opcao T
[ $COM_F ] && echo faz o necessario, opcao F
###############################################
$ ./x -t teste arquivo
Cifrao 1: arquivo
faz o necessario, opcao T
$ ./x -t teste -f teste arquivo
Cifrao 1: arquivo
faz o necessario, opcao T
faz o necessario, opcao F
eh soh escolher a melhor abordagem para o seu problema.
falow
--
thobias
-------
echo 9446046325380026818553633794429812592304650P | dc
-------
http://www.lcp.coppe.ufrj.br/~thobias
____________________________
|
| Against - HTML Mail
| Against - MS ATTACHMENTS
|
----------------------------