이 코드는 무엇을 합니까?
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
로그인한 사용자의 이름을 인쇄합니다. 이 구성은 이러한 토큰 사이의 명령 출력이 무엇인지 $(...)
할당합니다 . 두 개의 인수를 사용하여 호출하면 현재 로그인한 사용자의 로그인 정보(예: 구문이 정확 하거나 완전히 다른 것을 사용할 수 있음 )를 공백으로 구분된 여러 부분으로 구성된 출력과 Composition으로 파이프된 명령으로 반환하고 이후의 모든 내용을 잘라냅니다. 첫 번째 공간).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