我正在尝试将 getopts 用于 bash 脚本。该脚本可以有标志,所有这些标志都是强制性的,并且需要包含一个值。当应该包含值的强制标志之一为空时,getopts 使用下一个行标志作为其内容。我该如何防止这种情况?
这是我的例子:
#!/bin/bash
while getopts "A:B:" OPTION
do
case $OPTION in
A)
GILIA="$GILIA $OPTARG"
echo GILIA $GILIA
;;
B)
GILIB="$GILIB $OPTARG"
echo GILIB $GILIB
;;
esac
done
Run Code Online (Sandbox Code Playgroud)
当使用两个带有值的标志时:
./test_opt2 -A aaa -B bbb
GILIA aaa
GILIB bbb
Run Code Online (Sandbox Code Playgroud)
当使用“-A”标志为空时:
./test_opt2 -A -B bbb
GILIA -B
Run Code Online (Sandbox Code Playgroud)
我知道这是 getopts 的正常/典型行为,并且我确信有一种方法可以解决这个问题......
有任何想法吗?
如果你想向 then 传递一个空白参数 -A:
./test_opt2 -A '' -B bbb
Run Code Online (Sandbox Code Playgroud)
如果您希望脚本接受-A而不带参数,则更改脚本:
while getopts "AB:" OPTION
Run Code Online (Sandbox Code Playgroud)
然后,脚本将期望 -A 从不接受参数。
| 归档时间: |
|
| 查看次数: |
4593 次 |
| 最近记录: |