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

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

Re: [shell-script] IF and TEST


From: Tiago Peczenyj
Subject: Re: [shell-script] IF and TEST
Date: Fri, 20 Apr 2018 10:13:32 +0200

ola

as expressoes abaixo sao equivalentes

tpeczenyj@CPL-tpeczenyj:~$ seq 10
1
2
3
4
5
6
7
8
9
10
tpeczenyj@CPL-tpeczenyj:~$ seq 10 > x
tpeczenyj@CPL-tpeczenyj:~$ grep -q 4 x && echo contem 4 || echo nao contem 4
contem 4
tpeczenyj@CPL-tpeczenyj:~$ if grep -q 4 x ; then echo contem 4 ; else 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

tpeczenyj@CPL-tpeczenyj:~$ grep -q 4  x
tpeczenyj@CPL-tpeczenyj:~$ RETORNO=$?
tpeczenyj@CPL-tpeczenyj:~$ echo $RETORNO
0
tpeczenyj@CPL-tpeczenyj:~$ grep -q 66  x
tpeczenyj@CPL-tpeczenyj:~$ RETORNO=$?
tpeczenyj@CPL-tpeczenyj:~$ echo $RETORNO
1

e verificar o valor dessa variavel com o operador  -eq por exemplo

ficou claro?

abracos


2018-04-20 4:34 GMT+02:00 address@hidden [shell-script] <address@hidden>:
 

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 B. Peczenyj

http://about.me/peczenyj

reply via email to

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