Ajuda a entender o código bash? [fechadas]

2

O que esse código faz?

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
    
por user1149048 16.11.2014 / 12:17

1 resposta

3

Existem duas partes, as duas primeiras linhas e o resto:

export user=$(who am i | sed -e 's/ .*//')
echo $user

imprime o nome do usuário logado. a construção $(...) atribui a user qual é a saída do comando entre esses tokens. who quando invocado com um dois argumentos retorna informações de login no usuário atualmente logado (você pode, por exemplo, usar sintaticamente correto who am I ou algo completo diferente como who loves popcorn ), a saída disso consiste em várias partes separadas por espaços, e o comando sed no qual é canalizado, cortes de tudo após o primeiro espaço).

egrep -i "^www-data" /etc/group >/dev/null 2>/dev/null
if [ $? -eq 0 ]; then
    group='www-data'
else
    group='apache'
fi

define group a www-data se houver um nome de grupo começando com www-data (sem distinção entre maiúsculas e minúsculas, ou seja, WWW-data , www-data-hallo ) em /etc/group , senão group é definido como a string% código%. Isso é feito usando o comando apache (reprovado deve usar egrep ) para procurar insensitivo a maiúsculas e minúsculas ( grep -E ) para -i no início de uma linha ( www-data ) em ^ . Se houver uma correspondência encontrada, /etc/group (que contém o valor de saída do comando anterior) é 0 e a ramificação $? da instrução then é obtida, caso contrário, a ramificação if é obtida.

Se você deseja verificar se há um grupo com o nome exato else (diferencia maiúsculas de minúsculas e não apenas começando com essa sequência), é necessário fazer www-data

    
por 16.11.2014 / 12:40

Tags