Usando grep en una instrucción if-else [cerrado]


10

Por qué mi código no se muestra si una cadena ingresada no está en el archivo. Cuando ingreso una cadena y no está en el archivo, no hay respuesta, vuelve al principio. ¿Alguien puede decirme qué le pasa a mi 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
¿Qué esperas que pase?
Patrick

Estaba destinado a decir que una cadena que ingresas, la busca en el archivo y dice si esa cadena está presente. Ahora me he dado cuenta de que necesito ingresar otro bit de código para otra cosa. Gracias
Adam Poyser

input_stringno es realmente un nombre variable de habla, por cierto :)
Marian

Respuestas:


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
¡Acabo de probar este código y funciona, gracias! No me di cuenta de que todo mi problema era no tener una declaración else. Gracias por la rápida respuesta
Adam Poyser

2
Necesita citar los parámetros grep. Piense qué sucedería si mi cadena de búsqueda incluye -v, o si hay espacios en el nombre del archivo.
Ángel

0

Descubriste tu otra rama perdida, pero una sugerencia:

en lugar de usar $input_string $input_string1intente ${input_string} ${input_string1}solo para asegurarse de que no le $input_stringsiga 1.


No, su reemplazo propuesto es exactamente equivalente al original. $input_string1es el valor de la variable input_string1(dividida y globalizada, ya que no se cita), no involucra la variable input_string.
Gilles 'SO- deja de ser malvado'
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.