Tengo el grep
comando Estoy buscando una palabra clave de un archivo, pero no quiero mostrar la coincidencia. Solo quiero saber el estado de salida de grep
.
shell-script
scripting
grep
jackass27
fuente
fuente
echo $?
sigrep
devuelve un código de salida distinto de cero.Simplemente necesita combinar
grep -q <pattern>
con una verificación inmediata del código de salida para el último proceso para salir ($?
).Puede usar esto para crear un comando como este, por ejemplo:
uname -a | grep -qi 'linux' ; case "$?" in "0") echo "match" ;; "1") echo "no match" ;; *) echo "error" ;; esac
Opcionalmente, puede suprimir la salida de esta
STDERR
manera:grep -qi 'root' /etc/shadow &> /dev/null ; case "$?" in "0") echo "match" ;; "1") echo "no match" ;; *) echo "error: $?" ;; esac
Esto se imprimirá
error: 2
desde lacase
declaración (suponiendo que no tengamos privilegios para leer/etc/shadow
o que el archivo no exista), pero el mensaje de error degrep
será redirigido para/dev/null
que nunca lo veamos.fuente