Seguimiento de "whatis" devuelve 0 para los comandos que faltan Estoy tratando de modificar /usr/bin/whatis
para devolver un código de salida distinto de cero después de haber introducido un comando inadecuado. Mi enfoque para hacer esto es añadir una variable de retorno en el siguiente segmento, y devolver esa variable después del final del bucle
while [ "$1" != "" ]
do
found=0
for d in /var/cache/man $manpath /usr/lib
do
if [ -f $d/whatis ]
then
if grep -"$grepopt1" "$grepopt2""$1" $d/whatis
then
found=1
fi
fi
done
if [ $found = 0 ]
then
echo "$1: nothing appropriate"
**code=1**
fi
shift
done | eval ${PAGER:-more -E}
**return $code**
Sin embargo, como el while
se canaliza en el bucle eval
se ejecuta en un subshell así que code
no se asignará fuera del while
bucle. He probado múltiples diferentes métodos sin embargo, se trata de introducir un valor en el while
y no se envía un valor fuera del bucle while
bucle.
Una solución que encontré es simplemente eliminar todo el eval
pero me gustaría un método que conservara la extensibilidad original de whatis