将元素添加到bash数组

时间:2014-01-14 10:31:00

标签: arrays bash optionparser

我一直在尝试为我的一个项目编写一个非常基本的泛型 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

正如您在输出中看到的那样,问题是只有第一个选项和第一个参数存储在数组中。

我做错了什么?

1 个答案:

答案 0 :(得分:3)

解析和存储没问题,输出错误:你只打印数组的第一个元素。

请参阅man bash中的“数组”以获取正确的语法:

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