
¿Qué hace este código?
export user=$(who am i | sed -e 's/ .*//')
echo $user
egrep -i "^www-data" /etc/group >/dev/null 2>/dev/null
if [ $? -eq 0 ]; then
group='www-data'
else
group='apache'
fi
Respuesta1
Hay dos partes allí, las dos primeras líneas y el resto:
export user=$(who am i | sed -e 's/ .*//')
echo $user
imprime el nombre del usuario que ha iniciado sesión. la $(...)
construcción asigna user
cuál es el resultado del comando entre esos tokens. who
cuando se invoca con dos argumentos, devuelve información de inicio de sesión sobre el usuario actualmente conectado (puede, por ejemplo, usar sintácticamente correcto who am I
o algo completamente diferente como who loves popcorn
), la salida de eso consta de varias partes separadas por espacios y el sed
comando al que se canaliza, cortes de todo después del primer espacio).
egrep -i "^www-data" /etc/group >/dev/null 2>/dev/null
if [ $? -eq 0 ]; then
group='www-data'
else
group='apache'
fi
se establece group
en www-data
si hay un nombre de grupo que comienza con www-data (no distingue entre mayúsculas y minúsculas, es decir WWW-data
, www-data-hallo
) en /etc/group
; de lo contrario, group
se establece en la cadena apache
. Esto se hace usando el comando egrep
(en desuso se debe usar ) para buscar sin distinguir entre mayúsculas y minúsculas ( ) al principio de una línea ( ) en . Si se encuentra una coincidencia, entonces (que contiene el valor de salida del comando anterior) es 0 y se toma la rama de la declaración; de lo contrario, se toma la rama.grep -E
-i
www-data
^
/etc/group
$?
then
if
else
Si quieres comprobar si hay un grupo con el nombre exacto www-data
(distingue entre mayúsculas y minúsculas y no solo comienza con esa secuencia) tienes que hacergrep -e '^www-data:' /etc/group