Bash for循环语法解释

时间:2016-05-23 15:28:10

标签: linux bash

我在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的新手,我只知道基本的命令。提前谢谢!

1 个答案:

答案 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!