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)"
        ;;

假设用户是在-uor之后指定的--user(如-u my_user)。

另请注意,目前您应该删除第二种情况下标记为“正在工作”的语句,因为由于块后面的shift“全局”指令,它将丢弃命令行上的下一个参数。shiftcase

相关内容