Tengo un script bash con lo siguiente:
#!/bin/bash -e
egrep "^username" /etc/passwd >/dev/null
if[ $? -eq 0 ]
then
echo "doesn't exist"
fi
Este script no se ejecutará sin el -e. ¿Qué hace el -e
para este script? Además, ¿qué hace el $?
en este contexto?
-e
se documenta en set
.
if egrep -q "^username" /etc/passwd ; then echo "doesn't exist" ; fi
if
y [
. Este script no funcionará con -e
, porque si grep
no encuentra nada entonces bajo -e
el guión terminará ahí. Sin -e
, tienes el mensaje al revés: un estado ( $?
) de 0 significa que grep encontró al usuario. Tenga en cuenta que esto debería ser `grep '^ username:', por cierto (¿qué pasa si hay otro usuario con un nombre más largo?).
#/bin/bash -e
el mismo efecto que #/bin/bash
en la línea 1 y set -e
en la línea 2?
-e
en la página de manual (realmente quiero ver una respuesta a esto).$?
contiene el último código de salida (el delegrep
proceso generado anteriormente).