我不擅长Bash脚本,并试图了解更多。让我用代码介绍我的问题:
#!/bin/bash
version_num=
isWindows=
MSVC_VER=
VERBOSE=
while getopts “hw:v:m:V” OPTION
do
case $OPTION in
h)
usage
exit 1
;;
w)
isWindows=$OPTARG
;;
v)
version_num=$OPTARG
;;
m)
MSVC_VER=$OPTARG
;;
V)
VERBOSE=1
;;
?)
usage
exit
;;
esac
done
对于空间,删除了使用功能。
我的问题是:
第一个问题:
目前,如果我使用此脚本,我必须在每个选项后提供参数值,例如:
`bash test_bash.sh -v 4.2.2.0 -m 10.0 -w 1`
但是,假设我只需要查看是否存在-w
,那么设置一些变量值。我不想提供-w 1
,因为1
只是做某事的旗帜。我希望脚本的工作方式如下:
bash test_bash.sh -w -v 4.2.2.0 -m 10.0
我怎样才能做到这一点?我想做rm -r -f
这样的事情,它可以有多个选项,并且不要求每个选项后跟一些值。
第二个问题:
如果我删除
V)
VERBOSE=1
;;
来自:V
行以及while
的和VERBOSE=
,此脚本不再有效。是因为:V
是必需的吗?
非常感谢您的时间和帮助!
答案 0 :(得分:4)
在:
参数中的字母后面加getopts
表示是否需要参数。所以改为:
while getopts “hwv:m:V” OPTION
从脚本中删除:V
会破坏它,因为:
适用于它之前的m
选项,而不是之后的V
选项。删除:
后,表示m
不再使用参数,但您需要参数。