-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" 지시문으로 인해 명령줄의 다음 인수를 삭제하기 때문입니다.shift
case