我有一个案例脚本,需要在选项 -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
or之后指定的--user
(如-u my_user
)。
另请注意,目前您应该删除第二种情况下标记为“正在工作”的语句,因为由于块后面的shift
“全局”指令,它将丢弃命令行上的下一个参数。shift
case