对两个(关联?)数组的每个值进行Bash for循环

ref*_*xiv 2 arrays bash for-loop

/ etc/trueuserdomains的每一行都包含用户名及其关联的域.我想ln -s /home/$user /var/www/vhosts/$domain为每一行做.我能够用所需信息定义两个数组.但是,我无法以正确的顺序迭代数组.

#!/bin/bash

domain=(`cat /etc/trueuserdomains | cut -d: -f1`)
user=(`awk '{print $2}' /etc/trueuserdomains`)

for x in "${domain[@]}"
 do
  for y in "${user[@]}"; do
   ln -s /home/$y /var/www/vhosts/$x
  done
done
Run Code Online (Sandbox Code Playgroud)

这会为每个用户名重复一个域,即:

domain1.com user1
domain1.com user2
domain1.com user3
Run Code Online (Sandbox Code Playgroud)

关闭,但我需要:

domain1.com user1
domain2.com user2
domain3.com user3
Run Code Online (Sandbox Code Playgroud)

因此,基本上使用用户数组以正确的顺序遍历域数组.有任何想法吗?听起来像关联数组可能会有所帮助,但不幸的是,这个服务器只有Bash 3,它不支持它们.提前致谢!

Dim*_*lov 5

我错过了什么:

while IFS=:\  read -r d u; do
  echo ln -s /home/"$u" /var/www/vhosts/"$d"
done < /etc/trueuserdomains
Run Code Online (Sandbox Code Playgroud)

快乐时删除回音.