我在Linux操作系统的Bash shell中工作。我有以下for循环:
for ((i=0;i<${#listModels[@]};i++))
do
var=${listVersion[$i]}
if [ ${!var} ]
then
export MY_LIBRARY_PATH=$MY_LIBRARY_PATH:$ROOT_PATH/${listModels[$i]}/${listModels[$i]}_${!var}
else
echo ">>>> No ${listModels[$i]} version! <<<<"
fi
done
在此之前,我在脚本中有以下内容:
listModels=(model1
model2
model3)
listVersion=(MODEL1
MODEL2
MODEL3)
概念是MODEL1,MODEL2和MODEL3时不时地改变,例如它变成MODEL1.1,MODEL2.2,..我希望每次listVersion值改变时脚本都会修改我的路径。但是有人可以解释for循环功能的确切方式(特别是[@]和[$ i]的东西)。我是Bash的新手,我只知道基本的命令。提前谢谢!
答案 0 :(得分:3)
如man bash
中所述,${#array[@]}
返回数组中元素的数量。同样,${array[$i]}
(更好地写为${array[i]}
)返回数组的$i
- 元素。
#! /bin/bash
array=( a b c )
echo Size: ${#array[@]}
echo First: ${array[0]}
echo Second: ${array[1]}
echo Last: ${array[-1]} # Negative index counts from the right!