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

로그인한 사용자의 이름을 인쇄합니다. 구성 은 해당 토큰 사이의 명령 출력 $(...)에 할당됩니다 . 두 개의 인수로 호출하면 현재 로그인한 사용자에 대한 로그인 정보를 반환합니다(예: 구문이 정확 하거나 완전히 다른 것을 사용할 수 있음 ). 그 출력은 공백으로 구분된 여러 부분과 파이프로 연결되는 명령으로 구성됩니다. 첫 번째 공백 이후의 모든 내용을 잘라냅니다.)userwhowho am Iwho loves popcornsed

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

관련 정보