Usando grep em uma instrução if-else [fechada]


10

Por que meu código não está sendo exibido se uma sequência digitada não está no arquivo. Quando insiro uma string e ela não está no arquivo, não há resposta, ela volta ao início. Alguém pode me dizer o que há de errado com o meu código?

while :
do
echo "Please enter a string"
read input_string
echo "Please enter the file name too see if that string is present in it - (Enter .abw after)"
read input_string1
if grep -q $input_string $input_string1 ; then
echo  "Your string has been found"
fi
done

3
O que você está esperando que aconteça?
Patrick

Era para dizer que uma string que você digita, procura-a no arquivo e diz se essa string está presente. Agora percebi que preciso inserir outro código para outra coisa. Obrigado
Adam Poyser

input_stringnão é realmente um nome de variável falando, a propósito :)
Marian

Respostas:


10
while :
 do
     echo "Please enter a string"
     read input_string
     echo "Please enter the file name too see if that string is present in it - (Enter .abw after)"
     read input_string1
     grep -q "${input_string}" "${input_string1}"                                                                 
     if [ $? -eq 0 ] ; then
         echo  "Your string has been found"
     else 
         echo "Your string has not been found"
     fi
 done

1
Eu apenas tentei esse código e funciona obrigado! Não sabia que todo o meu problema era não ter uma declaração else. Obrigado pela resposta rápida
Adam Poyser

2
Você precisa citar os parâmetros grep. Pense no que aconteceria se minha string de pesquisa incluísse -vou houvesse espaços no nome do arquivo.
Ángel

0

Você descobriu o ramo em falta, mas uma sugestão:

em vez de usar $input_string $input_string1try ${input_string} ${input_string1}apenas para garantir que você não seja $input_stringseguido por 1.


Não, a substituição proposta é exatamente equivalente ao original. $input_string1é o valor da variável input_string1(dividida e globbed, pois não está entre aspas), não envolve a variável input_string.
Gilles 'SO- stop be evil'
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.