
marciomgil
(usa Outra)
Enviado em 29/08/2010 - 15:29h
- Pergunta simplificada:
Tenho uma variável neste formato:
opt="-e[qualquer_coisa]"
Quero remover o "e" de "$opt", então eu faço assim:
$ opt="-equalquer_coisa"
$ echo "$opt" | sed "s/e//"
-qualquer_coisa
Mas se "qualquer_coisa" for vazio não funciona:
$ opt="-e"
$ echo "$opt" | sed "s/e//"
Não retorna nada, mas deveria retornar "-".
Aguém sabe a solução?
- Explicação da pergunta:
Tenho o seguinte script que escrevi para remover arquivos temporários:
http://bash.pastebin.com/ZfawZQmD
Acontece que a opção -e não funciona quando usada nesta forma ou em conjunto com a opção -t (ou seja -te ou -et)
O culpado está na linha 72:
case "$opt" in
-*e*) exe="1"; opt=`echo "$opt" | sed "s/e//"`
esac
Pois quando "$opt" é "-e" o comando echo interpreta como sendo opção dele mesmo. Infelizmente o echo não implementa a opção "--", comum nos comando do Unix e que resolveria o problema.
Pergunto se existe uma forma elegante e o mais portável possível de resolver esta questão. Imaginei acrescentar um "-" extra antes de "$opt", mas se o usuário, por exemplo, informar -x o script vai dizer que --x é inválido...