Discussion:
[shell-script] IF and TEST
ivnogueira@yahoo.com.br [shell-script]
2018-04-20 02:34:39 UTC
Permalink
shelldações !


lá vai minha primeira participação nesse seleto grupo de shell...

quero buscar um nome qualquer dentro de um ARQUIVO qualquer:

nome=John
if (grep -q $nome ARQUIVO); then { echo "existe"; }; else { echo "nao existe"; }; fi

---> programa executado normalmente, com os resultados esperados


entretanto, quero modificar o trecho anterior a fim de usar o alias do comando "test" :

[[ (grep -q $nome ARQUIVO) ]] && { echo "existe"; } || { echo "nao existe"; }

---> conditional binary operator expected


PERGUNTA: o que está faltando (ou, o que está errado) no segundo trecho ?



atenciosamente,
Isaac Nogueira
Tiago Peczenyj tiago.peczenyj@gmail.com [shell-script]
2018-04-20 08:13:32 UTC
Permalink
ola

as expressoes abaixo sao equivalentes
1
2
3
4
5
6
7
8
9
10
contem 4
contem 4
echo nao contem 4 ; fi
contem 4
vamos entender

grep eh um binario executavel
grep com opcao -q (quiet) retorna erro pro sistema operacional ( $?
diferente de zero)
o && e || no shell verificam esse retorno do comando para saber o q executar
if then else fi tambem utiliza esse conceito

entretanto o comando *test* e seu alias* [[* nao interpreta isso como
'execute o comando' e sim como expressoes proprias (compara strings,
numeros, etc), vc nao vai conseguir utilizar o *test* desse jeito. vc
poderia fazer
0
1
e verificar o valor dessa variavel com o operador *-eq* por exemplo

ficou claro?

abracos
shelldações !
lá vai minha primeira participação nesse seleto grupo de shell...
nome=John
if (grep -q $nome ARQUIVO); then { echo "existe"; }; else { echo "nao existe"; }; fi
---> programa executado normalmente, com os resultados esperados
[[ (grep -q $nome ARQUIVO) ]] && { echo "existe"; } || { echo "nao existe"; }
---> conditional binary operator expected
PERGUNTA: o que está faltando (ou, o que está errado) no segundo trecho ?
atenciosamente,
Isaac Nogueira
--
Tiago B. Peczenyj

http://about.me/peczenyj
Andre Lopes da Silva alopes@ime.usp.br [shell-script]
2018-04-20 15:58:57 UTC
Permalink
Cara, tá errado a posição das tuas chaves

Eu mudei aqui pra

{ grep -q $nome ARQUIVO && echo "existe"; } || { echo "nao existe"; }



Veja aí se te resolve

basicamente vc tem que mudar pra ser { a && b } || { c }

Abraços


Em 20 Apr 2018 02:34:39 +0000
Post by ***@yahoo.com.br [shell-script]
shelldações !
lá vai minha primeira participação nesse seleto grupo de shell...
nome=John
if (grep -q $nome ARQUIVO); then { echo "existe"; }; else { echo "nao existe"; }; fi
---> programa executado normalmente, com os resultados esperados
[[ (grep -q $nome ARQUIVO) ]] && { echo "existe"; } || { echo "nao existe"; }
---> conditional binary operator expected
PERGUNTA: o que está faltando (ou, o que está errado) no segundo trecho ?
atenciosamente,
Isaac Nogueira
--
Andre Lopes da Silva
Técnico em Informática
SI - IME-USP
3091-9891
Sala 131-A

Enviado utilizando Claws Mail
OpenSUSE LEAP 42.3
'Julio C. Neves' julio.neves@gmail.com [shell-script]
2018-04-20 17:02:22 UTC
Permalink
Fala Isaac,
Não te respondi mais pq o PacMan (Tiago cheio de consoantes) deu uma
explicação boa. Mas já te desmoderei, agora suas msgs aparecerão direto na
lista. Para tua informação, com a sua entrada, agora somos 4032 na lista e
vc já deve ter visto que ela é tudo que eu disse. É um ótimo lugar para, se
vc participar, não esquecer o que aprendeu, aprender mais e firmar
conceitos.

Abraços,
Julio

*» Não tem tempo para fazer um curso presencial?*
*» Na sua cidade não tem nenhum bom curso de Linux?*
*» O treinamento está muito caro?*
*O melhor de todos em EAD é http://www.dicas-l.com.br/cursos/psl/
<http://www.dicas-l.com.br/cursos/psl/>*

*Damos treinamento em sua empresa **com certificado*
*e nota fiscal **por **um preço, **no mínimo, 50% **abaixo*
*de qualquer curso.*

​​
Nosso time de instrutores *in company* é formado somente por
​
​
autores
​ ​
​
de
*Best Sellers​ ​*​laureados ​sobre os temas.. P. exemplo:

Shell básico e Programação em Shell Julio Neves
Bacula Heitor Medrado
Zabbix Adail Host
Produção Gráfica e Videografismo Cadunico
Post by ***@yahoo.com.br [shell-script]
shelldações !
lá vai minha primeira participação nesse seleto grupo de shell...
nome=John
if (grep -q $nome ARQUIVO); then { echo "existe"; }; else { echo "nao existe"; }; fi
---> programa executado normalmente, com os resultados esperados
[[ (grep -q $nome ARQUIVO) ]] && { echo "existe"; } || { echo "nao existe"; }
---> conditional binary operator expected
PERGUNTA: o que está faltando (ou, o que está errado) no segundo trecho ?
atenciosamente,
Isaac Nogueira
ivnogueira@yahoo.com.br [shell-script]
2018-04-20 20:11:06 UTC
Permalink
já vi que o trem aqui é de alto nível !

consertei o código com a ajuda dos nobres colegas.


obrigado pelo retorno, senhores Peczenyj, André e grande oráculo shelleiro Julius Caesar Snows !


abraços a todos,
Isaac Nogueira

Loading...