这段代码有什么作用?
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-data
WWW-data
www-data-hallo
/etc/group
group
apache
egrep
grep -E
-i
www-data
^
/etc/group
$?
then
if
else
如果您想检查是否存在具有确切名称的组www-data
(区分大小写,而不仅仅是以该序列开头),您必须执行以下操作grep -e '^www-data:' /etc/group