[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] Valor padrão para parametro
From: |
Julio C. Neves |
Subject: |
Re: [shell-script] Valor padrão para parametro |
Date: |
Thu, 25 Aug 2011 11:41:25 -0300 |
Fala Willian,
em shell sempre existe algo mais simples. Eu faria assim:
$ Parm=${1:-0}; Parm=$[Parm <= 20000 ? 20000 : Parm]
A expressão ${...} é uma expansão de parâmetros e serve para o caso de vc
não ter informado $1, nesse caso a variável $Parm receberia zero.
A expressão $[...] é chamada de operador ternário e muito poucas pessoas o
usam, pq não sabem o tamanho do galho que esses operadores quebram. Eles
atuam com se fosse uma operação matemática condicional. Este cmd deveria ser
lido da seguinte forma:
Parm recebe: Se Parm menor ou igual a 20000, então (?) 20000, senão (:) o
próprio Parm.
O Shell é tão rico em soluções, que é provável que existam outras mais
enxutas.
Lembre-se: sempre desconfie de um script com mais de 10 linhas...;)
Cordialmente,
Julio Neves
*Quer programar bem em Shell?
*
*Use este endereço de e-mail, o Skype ou ☎ (21)8112-9988 ☎*
*
*
**
*
*
My profiles: [image: Twitter] <http://twitter.com/juliobash>
Contact me: [image: Skype] julioneves1
Em 24 de agosto de 2011 23:10, williamalves1975br <
address@hidden> escreveu:
> **
>
>
> #!/bin/bash
>
> #----------------------------------------------------------
> # PARAMETRO PADRÃO 20000 Registros, do LOG para Analise
> #----------------------------------------------------------
> A fim de discutir, melhorar, evoluir, ensinar e claro aprender mais:
>
> Cheguei a uma validação simples no início do script, para definir um valor
> padrão caso não se utilize algum parametro, ou definir o valor do parametro
> se for maior que o padrão. Será que existe algo mais simples ainda?
>
> if [ $# -eq 0 ]; then
> {
> PARAMETRO=20000
> }
> else
> {
> if [ $1 -ge 20000 ]; then
> {
> PARAMETRO=$1
> }
> else
> {
> PARAMETRO=20000
> }
> fi
> }
> fi
>
> echo $PARAMETRO
>
>
>
[As partes desta mensagem que não continham texto foram removidas]