Usando alguns operadores lógicos (iniciando em @jimmij)
grep -q "$finding" information.txt
se comporta como uma resposta booleana (não imprime nada, apenas tem um status de retorno de 0 se encontrado, diferente de zero).
grep -F -- "$finding" ...
texto de pesquisa em vez de regexp (remova-o se quiser
para procurar por regexp - pode haver alguns riscos de segurança ... (obrigado @StephanChazelas))
read finding
if [ -z "$finding" ]; then
echo "You didn't enter anything"
else
grep -qF -- "$finding" information.txt && echo "found" || echo "not found"
fi
ou até mesmo
[ -z "$finding" ] &&
echo "nothing entered" ||
grep -qF -- "$finding" information.txt || echo "not found"
(embora tenha cuidado, ele também executará o segundo grep
e / ou echo
se o primeiro echo
falhar)
Editar 1 > explain grep -q ...
Claro.
Em situações normais, o status de retorno do grep é 0 (e apenas retorna "não 0" se ocorrer um erro (por exemplo, arquivo não encontrado))
grep -qF exp file
"retorna" 0 se encontrar exp no arquivo, caso contrário, o erro ( grep -q exp file
faria isso se a exp
regexp fosse correspondida em file
).
Esse comportamento pode ser usado em declarações de controle bash (if, elif, while, & & amp ;, ||, etc)
read f
if [ -z "$f" ]; then
echo "You didn't enter anything"
elif grep -qF -- "$f" information.txt; then
echo "found"
else
echo "not found"
fi