grep condicional sin opción silenciosa

grep condicional sin opción silenciosa

Siempre pensé que la -qopción silenciosa ( ) debía usarse cuando se usaba grepde forma condicional. Pero al volver a leer la manpágina parece que debería funcionar sin ella.

Entonces, si quieres imprimir coincidencias y usarlas en forma condicional, ¿puedes hacer algo como

grep PATTERN FILE && do_something_else

Lo único que me hace dudar es que parece haber una ligera diferencia en el estado de salida.

Con -q,

  • grep "saldrá inmediatamente con estado cero si se encuentra alguna coincidencia,incluso si se detectó un error".

Sin-q

  • "El estado de salida es 0 si se encuentran las líneas seleccionadas y 1 si no se encuentran. Si se produjo un error, el estado de salida es 2.".

¿Pero no puedo pensar en un ejemplo en el que la diferencia se haga notable?

Respuesta1

He aquí un ejemplo:

$ echo "foo" > file
$ grep foo file wrongfile; echo "Exit status: $?"
file:foo
grep: wrongfile: No such file or directory
Exit status: 2
$ grep -q foo file wrongfile;  echo "Exit status: $?"
Exit status: 0

Entonces, tenemos un archivo llamado fileque contiene la cadena foo. Cuando ejecuté grepon y inexistente , ya que -qcontenía una coincidencia, salí con el estado a pesar del error "No existe tal archivo". filewrongfilefilegrep0

información relacionada