Arrays 向bash数组添加元素

Arrays 向bash数组添加元素,arrays,bash,optionparser,Arrays,Bash,Optionparser,我一直在尝试为我的一个项目编写一个非常基本的通用bash选项解析器。其思路如下: 我提供了一个命令行参数列表,其中一些是选项 我想将选项提取到一个单独的数组中 最后,我将使用两个阵列: 一个参数数组 一个用于选项的数组 注意:我不关心可选选项和带参数的选项。就我而言,所有选项都是开关。 以下是我目前掌握的代码: parse() { options=() arguments=() for arg do if [[ $arg = -* ]] then

我一直在尝试为我的一个项目编写一个非常基本的通用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
正如您在输出中看到的,问题在于数组中只存储了第一个选项和第一个参数


请问我做错了什么?

解析和存储正常,输出错误:您只打印数组的第一个元素

有关正确的语法,请参见
manbash
中的“数组”:

echo "${options[@]}"
echo "${arguments[@]}"

解析和存储正常,输出错误:只打印数组的第一个元素

有关正确的语法,请参见
manbash
中的“数组”:

echo "${options[@]}"
echo "${arguments[@]}"

解析和存储正常,输出错误:只打印数组的第一个元素

有关正确的语法,请参见
manbash
中的“数组”:

echo "${options[@]}"
echo "${arguments[@]}"

解析和存储正常,输出错误:只打印数组的第一个元素

有关正确的语法,请参见
manbash
中的“数组”:

echo "${options[@]}"
echo "${arguments[@]}"