
這段程式碼有什麼作用?
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