遍历所有的参数数组,不知道有多少争论,在shell脚本?(Loop over the argumen

2019-09-26 18:47发布

我想许多参数传递给shell脚本,我不知道他们有多少论点将是,我要来处理它们。 我做了下面的代码:

int=$1
src=$2

r=$3
string=$4

duration=$5

./start.sh $int $r $src "$string"
sleep $duration

shift; shift; shift; shift; shift

while [ $# -gt 2 ]
do
  r=$1
  string=$2
  duration=$3
  ./change.sh $int $r "$string"
  sleep $duration
  shift; shift; shift
done

这一工程,但只有一个时间,现在我想这个脚本来运行所有的时间,我的意思是使用while 1但由于参数列表是在代码结束时清空,不会以这种方式工作!

有没有办法做这样的事情在shell脚本下面的“伪代码”:

for( i=0 ; i<arguments.count; i++ ){
   //do something with arguments[i]
}

或复制的参数阵列到另一个阵列,这样我可以在以后使用它,我想要的方式。 我的意思是我可以复制$*$@arg到另一个阵列?

任何帮助,高度赞赏。

Answer 1:

参数的数量被存储在参数# ,它可以与被访问$#

在所有参数的简单循环可以写成如下:

for arg
do
    # do something with the argument "arg"
done


Answer 2:

你可以用$#来获得的传递给脚本,或参数个数$@让整个参数列表。



Answer 3:

declare -a array_list
index=0
for arg
do
   array_list[$index]=$arg
   echo ${array_list[$index]} #just to make sure it is copied :)
   ((index++))
done

现在,我使用array_list做我想做的事情有参数列表。 谢谢



文章来源: Loop over the arguments array, without knowing how many arguments, in a shell script?