Bash 如何在循环中迭代多个数组
下面是我的例子。我正在尝试创建一个脚本,它将执行git clone+git pull。下面我尝试迭代第二个数组(A_模块),检查repos文件夹是否存在,如果不存在,创建它,然后cd到它并执行git pull。问题是如何在变量to循环中使用第一个数组值中的一个作为第二个数组名。在第二个for循环中,${DIR[@]};不行!。需要知道如何将${DIR[@]}扩展到${A_模块[@]}。 我可以很容易地做到这一点,在第一个数组中,3个值对应3个for循环。但是,用我正在努力的方式来实现这一目标的任何更聪明的方法。。非常感谢Bash 如何在循环中迭代多个数组,bash,Bash,下面是我的例子。我正在尝试创建一个脚本,它将执行git clone+git pull。下面我尝试迭代第二个数组(A_模块),检查repos文件夹是否存在,如果不存在,创建它,然后cd到它并执行git pull。问题是如何在变量to循环中使用第一个数组值中的一个作为第二个数组名。在第二个for循环中,${DIR[@]};不行!。需要知道如何将${DIR[@]}扩展到${A_模块[@]}。 我可以很容易地做到这一点,在第一个数组中,3个值对应3个for循环。但是,用我正在努力的方式来实现这一目标的任
#!/bin/bash
BASE_FOLDER=/opt/xyz
declare -a DIR_TOP=(A_modules customers C_modules)
declare -a A_modules=(python_repo java_repo perl_repo)
declare -a customers=(repo1 repo2 repo3)
declare -a C_modules=(xy_repo1 yz_repo2)
#GIT clone.
cd ${BASE_FOLDER}
for DIR in ${DIR_TOP[@]}; do
if [ ! -d "${DIR_TOP[$DIR]}" ]; then
mkdir -p ${BASE_FOLDER}/${DIR}
fi
for REPO in ${DIR[@]}; do
cd ${BASE_FOLDER}/${DIR_TOP[$DIR]}/
if [ ! -d "${REPO]}" ]; then
mkdir ${REPO}
echo "Git cloning ${DIR_TOP[$DIR]} group repositorys: ${REPO} ..."
git clone --branch 8.0 https://${GIT_USER}@${GIT_SERVER}/r/${DIR_TOP[$DIR]}/${REPO}.git
fi
done
done
您应该使用
tempVar
,然后使用进行计算代码>,审查:
谢谢谢谢你,何塞。
#!/bin/bash
declare -a DIR_TOP=(A_modules customers C_modules)
declare -a A_modules=(python_repo java_repo perl_repo)
declare -a customers=(repo1 repo2 repo3)
declare -a C_modules=(xy_repo1 yz_repo2)
for DIR in ${DIR_TOP[@]}; do
echo "1: $DIR";
tempVar="$DIR[@]";
for REPO in ${!tempVar}; do
echo "2: $REPO";
done
done