If - Else 문: 사용자가 관리자인지 확인

If - Else 문: 사용자가 관리자인지 확인
read -p "What is your name?:" ANSWER
if ["$ANSWER" == "root"]
    then
        echo "Hello, administrator"
    else
        echo "Hello, $ANSWER" 
fi

콘솔에서 "root"라고 대답하면 "Hello Admin"이 표시될 것이라고 가정하지만 항상 두 번째 사례가 표시됩니다. 내가 뭘 잘못했나요? [또한 "$ANSWER" = "myname"과 같은 다른 if 조건을 시도했지만 여전히 작동하지 않습니다.] 미리 감사드립니다!

답변1

코드에 구문 문제가 있습니다. 테스트 [전후에 공백이 있어야 합니다 .]

read -p "What is your name?:" ANSWER

if [ "$ANSWER" == "root" ]; then
    echo 'Hello, administrator'
else
    printf 'Hello, %s\n' "$ANSWER"
fi

id또한 이 유틸리티를 사용하여 사용자의 UID를 가져올 수도 있습니다 . 루트 사용자의 UID는 항상 0입니다.

if [ "$(id -u)" -eq 0 ]; then
    echo 'Hello, administrator'
else
    printf 'Hello, %s\n' "$(id -u -n)"
fi

id -u현재 사용자의 UID가 양의 정수로 반환되고, id -u -n사용자 이름이 반환됩니다. 사용자 이름을 사용 $USER하거나 인쇄 할 수도 있지만 $LOGNAME비교 시 UID(숫자)를 사용하는 것이 더 안전합니다.

셸은 bash또한 현재 사용자의 UID를 에 저장하므로 $UID에서 bash다음을 작성할 수 있습니다.

if [ "$UID" -eq 0 ]; then
    echo 'Hello, administrator'
else
    printf 'Hello, %s\n' "$USER"
fi

관련 정보