Su comando,
check=grep -ci 'text' file.sh
será interpretado por el shell como "ejecutar el comando -ci
con los argumentos text
y file.sh
, y establecer la variable check
al valor grep
en su entorno".
El shell almacena el valor de salida del comando ejecutado más recientemente en la variable ?
. Puede asignar su valor a una de sus propias variables como esta:
grep -i 'PATTERN' file
check=$?
Si desea actuar sobre este valor, puede usar su check
variable:
if [ "$check" -eq 0 ]; then
# do things for success
else
# do other things for failure
fi
o puede omitir el uso de una variable separada y tener que inspeccionar $?
todos juntos:
if grep -q -i 'pattern' file; then
# do things (pattern was found)
else
# do other things (pattern was not found)
fi
(tenga en cuenta -q
que indica grep
que no envíe nada y que salga tan pronto como algo coincida; no estamos realmente interesados en qué coincide aquí)
O, si solo quiere "hacer cosas" cuando no se encuentra el patrón :
if ! grep -q -i 'pattern' file; then
# do things (pattern was not found)
fi
Guardar $?
en otra variable solo es necesario si necesita usarlo más tarde, cuando el valor en $?
se ha sobrescrito, como en
mkdir "$dir"
err=$?
if [ "$err" -ne 0 ] && [ ! -d "$dir" ]; then
printf 'Error creating %s (error code %d)\n' "$dir" "$err" >&2
exit "$err"
fi
En el fragmento de código anterior, $?
se sobrescribirá el resultado de la [ "$err" -ne 0 ] && [ ! -d "$dir" ]
prueba. Guardarlo aquí solo es realmente necesario si necesitamos mostrarlo y usarlo con exit
.
$?
justo después de que finalice el comando.