我一直在尝试为我的一个项目编写一个非常基本的泛型 bash选项解析器。这个想法如下:
注意:我不关心带参数的可选选项和选项。就我的目的而言,所有选项都是开关。
这是我目前的代码:
parse() {
options=()
arguments=()
for arg
do
if [[ $arg = -* ]]
then
options+=("$arg")
else
arguments+=("$arg")
fi
done
echo $options
echo $arguments
}
# $ parse --one --two -v "FOO" "BAR"
# => --one
# => FOO
正如您在输出中看到的那样,问题是只有第一个选项和第一个参数存储在数组中。
我做错了什么?
答案 0 :(得分:3)
解析和存储没问题,输出错误:你只打印数组的第一个元素。
请参阅man bash
中的“数组”以获取正确的语法:
echo "${options[@]}"
echo "${arguments[@]}"