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
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.
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
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
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.
Tags bash scripting shell-script