我有一个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
。
我做错了什么?
答案 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