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

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

관련 정보