
Necesito una sola línea que muestre "sí" o "no" si grep encuentra algún resultado.
He jugado con grep -c
, pero sin éxito.
Respuesta1
Qué tal si:
uptime | grep user && echo 'yes' || echo 'no'
uptime | grep foo && echo 'yes' || echo 'no'
Entonces puedes tenerlo en silencio:
uptime | grep --quiet user && echo 'yes' || echo 'no'
uptime | grep --quiet foo && echo 'yes' || echo 'no'
Desde la página del manual grep:
ESTADO DE SALIDA
Normalmente, el estado de salida es 0 si se encuentran las líneas seleccionadas y 1 en caso contrario. Pero el estado de salida es 2 si ocurrió un error, a menos que se use la opción -q o --quiet o --silent y se encuentre una línea seleccionada.
Respuesta2
No estoy seguro de lo que quieres decir con "una sola línea", para mí esto es una "única línea"
Simplemente agregue ; if [ $? -eq 0 ]; then echo "Yes"; else echo "No"; fi
después de su comando grep
bash$ grep ABCDEF /etc/resolv.conf; if [ $? -eq 0 ]; then echo "Yes"; else echo "No"; fi
No
bash$ grep nameserver /etc/resolv.conf; if [ $? -eq 0 ]; then echo "Yes"; else echo "No"; fi
nameserver 212.27.54.252
Yes
Agregue el indicador -q a grep si desea suprimir el resultado de grep
bash$ grep -q nameserver /etc/resolv.conf; if [ $? -eq 0 ]; then echo "Yes"; else echo "No"; fi
Yes