帮助理解 bash 代码吗?

帮助理解 bash 代码吗?

这段代码有什么作用?

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

答案1

有两部分,前两行和其余部分:

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

打印登录用户的名称。该$(...)构造分配给user这些标记之间的命令的输出是什么。who当使用两个参数调用时,返回当前登录用户的登录信息(例如,您可以使用语法正确的who am I或完全不同的内容,例如who loves popcorn),其输出由用空格分隔的多个部分以及sed通过管道传递到的命令组成,剪切第一个空格之后的所有内容)。

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

如果 中存在以 www-data 开头的组名(不区分大小写,即, ) ,则设置group为,否则设置为字符串。这是通过使用 (不推荐使用)命令在 中的行 ( )开头搜索不区分大小写 () 来完成的。如果找到匹配项,则(保存前一个命令的退出值)为 0,并采用该语句中的分支,否则采用该分支。www-dataWWW-datawww-data-hallo/etc/groupgroupapacheegrepgrep -E-iwww-data^/etc/group$?thenifelse

如果您想检查是否存在具有确切名称的组www-data(区分大小写,而不仅仅是以该序列开头),您必须执行以下操作grep -e '^www-data:' /etc/group

相关内容