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

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

Re: [shell-script] Condições com IF


From: Julio C. Neves
Subject: Re: [shell-script] Condições com IF
Date: Thu, 9 Jan 2014 20:05:09 -0200

Giovanni o Shell tem um cmd if muitíssimo poderoso que, diferentemente de tudo que vc conhece, ele não testa condição, mas sim o retorno de uma determinada instrução. Aí vc vai me perguntar:
-  E como eu faço para testar uma condição?
Bem, para testar condições, existe o cmd test (que testa pelo menos 50 vezes mais condições que o if das outras linguagens) mas uma instrução do tipo:

if test ${method} = update

Ficaria bastante estranha, não é? Então por isso o cmd test tb pode ser representado por um par de colchetes e esse cmd ficaria assim:

if [ ${method} = update ]

Repare que entre o cmd test ([]) e seus argumentos, como em todos os cmds de shell, existem espaços em brancos.

Resumindo, o erro está na falta de espaços entre o cmd e seus argumentos. Para ficar bom mesmo neste cmd, leia daquiaté aqui, inclusive. O texto está em pt_BR, é engraçado e *cheio* de exemplos.

OBS: São raros os casos em que as variáveis do shell precisam ficar entre chaves. A linha que mencionamos poderia (e deveria) ser:

if [ $method = update ]

Facilita a legibilidade, pesa menos para o interpretador e vc tecla menos.

Abcs,
Julio
@juliobash

Próximos cursos de Shell

Cidade

Local

Período

São Paulo

4Linux

03-07/02

Curitiba

SoftSell

17-21/02

Rio de Janeiro

EDX

10-14/03

Dou treinamento de shell em qualquer cidade.
Para detalhes, entre em contato por email ou
echo 436233889341364416673541503686485725801923229706P | dc 



Em 9 de janeiro de 2014 19:22, Giovanni Souza <address@hidden> escreveu:
 

Caros boa noite,

Estou com um problema no meu script em uma parte que testa condições.

tenho um arquivo de nome exemplo.conf que contem variáveis:

method=update # (ou: rebuild)
mode=schema  # (ou: query)

Estou criando uma condição para testar o valor da variável do arquivo se é um desses valores acima. Porém retorna erro de comando não encontrado.

Poderiam ajudar na minha lógica de condição ??

Obrigado.

Segue uma parte do script onde gera o erro:

        importacaocore=`find ${importacao} -name '*_dados.conf'`

        method=`grep -e 'method'  ${importacaocore}|cut -d= -f2`

        mode=`grep -e 'mode'  ${importacaocore}|cut -d= -f2`

        nomecore=`grep -e 'nomecore'  ${importacaocore}|cut -d= -f2`

        url="" href="http://localhost/ccp.holograma/biserver/coreAdmin.do?dispatch=importSchema&datasource=HOLOGRAMA_BISERVER_LOCAL&method=$%7Bmethod%7D&mode=$%7Bmode%7D&path=$%7Bimportacao%7D/$%7Bnomecore%7D$%7Bjs%7D&token=$%7Btoken%7D" target="_blank">http://localhost/ccp.holograma/biserver/coreAdmin.do?dispatch=importSchema&datasource=HOLOGRAMA_BISERVER_LOCAL&method=${method}&mode=${mode}&path=${importacao}/${nomecore}${js}&token=${token}"

        echo $url

        if [${method} = update]

        then
           if [${mode} = schema]
           then

                wget --output-file=/dev/null --output-document=${importacao}/${nomecore}.txt $url &
           fi
        elif [${method} = update]

        then
           if [${mode} = query]
           then

                wget --output-file=/dev/null --output-document=${importacao}/${nomecore}.txt $url &
           fi

        elif [${method} = rebuild]

        then
           if [${mode} = schema]
           then

                wget --output-file=/dev/null --output-document=${importacao}/${nomecore}.txt $url &
           fi
        elif [${method} = rebuild]

        then
           if [${mode} = query]
           then

                wget --output-file=/dev/null --output-document=${importacao}/${nomecore}.txt $url &
           fi
        else

           echo "Informações de method e/ou mode do arquivo ${importacaocore} estão incorretas.
                 Preencher a variável method com: update caso queira atualizar ou rebuild caso deseja apagar estruturas e consultas do Solr e preencher com as informações do arquivo .txt
                 Preencher a variável mode com: schema caso queira alterar/atualizar a estrutura ou query caso queira alterar/atualizar as consultas"

        fi




reply via email to

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