幫助理解 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

相關內容