我有一个想通过三种方式运行的脚本:
./script.sh
./script.sh -u
./script.sh -u username
有没有办法做到这一点?
在阅读了一些指南(例如here和here之后),这似乎是不可能的,尤其是当我想使用getopts
时。
我可以使用getopts
来执行此操作,还是需要以其他方式解析我的选项?我的目标是,如果可以的话,继续使用getopts
。
答案 0 :(得分:0)
BashFAQ#35中的非getopts
示例可以说明用例:
user_set=0 # 1 if any -u is given
user= # set to specific string for -u, if provided
while :; do
case $1 in
-u=*) user_set=1; user=${1#*=} ;;
-u) user_set=1
if [ -n "$2" ]; then
user=$2
shift
fi ;;
--) shift; break ;;
*) break ;;
esac
shift
done