我想将许多参数传递给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]
}
或将arguments数组复制到另一个数组中,以便我可以按照我想要的方式使用它。
我的意思是我可以将$*
或$@
或arg
复制到另一个数组中吗?
非常感谢任何帮助。
答案 0 :(得分:3)
参数的数量存储在参数#
中,可以使用$#
进行访问。
所有参数的简单循环可以写成如下:
for arg
do
# do something with the argument "arg"
done
答案 1 :(得分:0)
您可以使用$#
获取传递给脚本的参数数量,或使用$@
获取整个参数列表。
答案 2 :(得分:0)
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 为参数列表做任何我想做的事情。 感谢