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

[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]



reply via email to

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