使用“2”变量在bash中循环变量

Vik*_*tor 2 bash shell-script

所以我知道如何遍历 1 个变量:

folder="(first|second|third)"
for i in "${folder[@]}"; do
  rclone move /mounts/$folder/cache
done
Run Code Online (Sandbox Code Playgroud)

但是当他们是 2 的时候怎么做呢?

folder="(first|second|third)"
mount="(something1|something2|something3)"
for i in "${folder[@]}"; do
  rclone move /mounts/$folder/cache $mount
done
Run Code Online (Sandbox Code Playgroud)

所以脚本应该循环每个文件夹并添加正确的挂载。

最后,执行应该是这样的:

 rclone move /mounts/first/cache something1
 rclone move /mounts/second/cache something2
 rclone move /mounts/third/cache something3
Run Code Online (Sandbox Code Playgroud)

Ste*_*ris 7

您需要迭代数组索引号而不是值。这是使用${!folder[@]}语法完成的。

通过这种方式,您可以通过循环内的相同索引访问两个数组

例如(echo在这个例子中放在前面)

folder=(first second third)
mount=(something1 something2 something3)
for i in "${!folder[@]}"; do
  echo rclone move /mounts/${folder[$i]}/cache ${mount[$i]}
done
Run Code Online (Sandbox Code Playgroud)

会输出

rclone move /mounts/first/cache something1
rclone move /mounts/second/cache something2
rclone move /mounts/third/cache something3
Run Code Online (Sandbox Code Playgroud)