
이 코드는 무엇을 합니까?
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