Tendo um problema procurando por uma string em um arquivo

3

Eu tentei usar um loop 'case', mas não funciona por um motivo desconhecido para mim.

Este é o meu script para o loop do caso.

echo "Do you wish to search again? [y/n]"
read INPUT_STRING2
case $INPUT_STRING2
   y)
   ;;
   *)
   exit
   ;;

Então, estou tendo problemas para tornar meu script mais amigável, quero que meu script informe ao usuário se a string não foi encontrada, mas não consigo descobrir. Eu tentei usar um loop de caso, mas não tive sorte, e tentei usar uma instrução else, mas não funcionou.

if grep -q $STRING $FILE ; then
             echo "string found"
fi

Esta parte funciona, mas não é tudo que eu quero.

    
por Jack Slater 19.09.2014 / 10:44

3 respostas

3

Parece haver um ' in ' ausente na linha com a instrução case, bem como um fechamento esac :

echo "Do you wish to search again? [y/n]"
read INPUT_STRING2
case $INPUT_STRING2 in
   y)
   ;;
   *)
   exit
   ;;
esac
    
por 19.09.2014 / 10:49
3

Você fez dois erros de sintaxe ( in após a variável e esac como final da instrução case):

echo "Do you wish to search again? [y/n]"
read INPUT_STRING2
case $INPUT_STRING2 in
   "y")
   echo "Searching again"
   ;;
   *)
   exit
   ;;
esac
    
por 19.09.2014 / 10:50
1

I want my script to tell the user if the string isn’t found ….    I have tried ... to use an else statement but it didn't work.

O que você tentou?

if grep -q "$STRING" "$FILE"
then
        echo "string found"
else
        echo "string not found"
fi

funciona.

P.S. Eu aconselho você a citar todas as referências a variáveis do shell (por exemplo, "$INPUT_STRING2" , "$STRING" e "$FILE" ) a menos que você tenha uma boa razão para não fazer isso e tenha certeza de que sabe o que está fazendo. Por outro lado, você não precisa para citar cadeias de caracteres constantes (por exemplo, string found ) a menos que contenham caracteres especiais. (Colchetes - “ [ ” e “ ] ” - são caracteres especiais neste contexto.) Mas é uma boa ideia citá-los de qualquer maneira.

    
por 19.09.2014 / 19:32