如何访问数组成员?

时间:2013-06-25 16:08:18

标签: arrays sh

我有一个shell脚本,它使用getopt获取命令行参数。我的脚本的那部分很好,但是,我需要一个特殊情况,可以多次提交一个特定的参数。

以下是我如何处理它的问题:

#!/bin/sh

i=0

# once in the case statement I do the following:
while true
do
   case "$1" in

   -p) 
      paramList[$i]=$2
      ((i++))
      shift 2
      ;;
done

这是正确填充paramList数组(我认为),但每当我尝试以下内容时:

for param in $paramList
do
   echo "Params: $param"
done

它只返回第一个参数。因此,如果我执行./myscript -p blah -p blah2 -p blah3,则只返回blah

我做错了什么?

2 个答案:

答案 0 :(得分:1)

您可以通过以下方式创建数组:

paramList=( "$@" )

然后您可以通过执行以下操作来迭代它们:

for param in "${paramList[@]}"
do
   echo "Params: $param"
done

答案 1 :(得分:1)

case语句中,您只需添加到数组中:

-p) 
   paramList+=( "$2" )
   shift 2
   ;;

无需索引。

迭代数组:

for param in "${paramList[@]}"
do
   echo "Params: $param"
done