No hay nada más molesto para un sysadmin que correr los scripts en algún sistema y que alguno de los comandos que forman parte del código no esté presente en el sistema. Así, disponemos de comandos que miran que otros comandos están o no están dando el correspondiente aviso y abortando la ejecución.
La sintaxis como sigue:
command -v $COMANDO
Un ejemplo:
$ command -v cp /bin/cp
Ahora uno que no existe
$ command -v prueba $ $? 1
Vemos como responde con la ruta al ejecutable en éxito y pone a 1 el flag de error cuando no existe. ¿Cómo lo usamos en un script? Muy fácil
Lo primero que necesitamos es una variable CMDLIST donde listamos los comandos que necesitamos
CMDLIST="ls cp nmap echo cat";
y creamos un bucle para comprobar que existen o salimos con algún mensaje de error que indique que comando falta.
for i in $CMDLIST do command -v $i >/dev/null && continue || { echo "$i command not found."; exit 1; } done
Dependiendo de la funcionalidad del script, el echo de comprobar que todos los elementos están nos puede ahorrar algún disgusto como perdida de datos o de tiempo ya que en el peor de los casos, el comando que falta puede ser el último de un programa de lotes que tarde varias horas en completarse.