BASH - 사용자 이름을 입력할 수 있는 상황 옵션

BASH - 사용자 이름을 입력할 수 있는 상황 옵션

-u user 옵션에 사용자 이름을 입력해야 하는 케이스 스크립트가 있습니다... 이 옵션에 특정 유형의 사용자 그룹을 나열하려면 user 변수를 어떻게 입력해야 합니까? 도움을 주셔서 감사합니다.

#!/bin/bash
while [[ "$1" =~ ^- && ! "$1" == "--" ]]; do case $1 in
            -h | --help)
                    echo "usage=$(basename "$0")[-h][-g][-u user][-e]
                    -h      [show help]
                    -g      [show only primary group, otherwise all]
                    -u user [show groups of specific user, otherwise logged] user
                    exit
                    ;;
            -g | --primary)
                    shift;
                    echo "under work"
                    ;;
            -u $user | --user)
                    shift;
                    echo "$(groups user)"
                    ;;
esac; shift; done
if [[ "$1" == '--' ]];then
    shift;
fi

답변1

shift"현재" 첫 번째 매개변수( $1)가 삭제되고 모든 후속 매개변수가 "왼쪽으로 이동"하므로 대소문자를 다음과 같이 수정하기만 하면 됩니다 -u.

        -u | --user)
            shift;
            echo "$(groups $1)"
        ;;

사용자가 -u또는 뒤에 지정 된다고 가정합니다 --user(예 -u my_user: ).

또한 현재 두 번째 경우에 "working"이라고 표시된 문을 제거해야 한다는 점에 유의하십시오. 이는 shift블록 뒤의 "global" 지시문으로 인해 명령줄의 다음 인수를 삭제하기 때문입니다.shiftcase

관련 정보