Linux bash 中的 python zip() 函数等效于什么?

Gab*_*ele 2 bash loops

我想迭代 bash 中的成对元素。在 Python 中,这很简单:

x_list = [1, 2, 3, 4]
y_list = ["a", "b", "c", "d"]

for x, y in zip(x_list , y_list):
    # here we have access to the values (i.e. the pairs are assigned to variables):
    result = do_something(x, y)
    print(result)
Run Code Online (Sandbox Code Playgroud)

我如何在 bash 中复制这种行为?我需要将这些对的值存储到 for 循环内部的变量中,以便我可以执行一些操作。它应该是这样的:

for x, y in 1a 2b 3c 4d
  do 
     python script.py --x_value=${x} --y_value=${y}
  done
Run Code Online (Sandbox Code Playgroud)

请注意,列表的元素也可能是复杂的东西,例如: x_list = [1e-5, 1e-4, 1e-3]y_list = [10, 20, 30]

Fra*_*ona 6

您的代码的可能翻译是:

#!/bin/bash

x_list=(1 2 3 4)
y_list=(a b c d)

for i in "${!x_list[@]}"
do
    x=${x_list[i]}
    y=${y_list[i]}
    printf '%q %q\n' "$x" "$y"
done
Run Code Online (Sandbox Code Playgroud)
1 a
2 b
3 c
4 d
Run Code Online (Sandbox Code Playgroud)

但它依赖于这样一个事实:两个新创建的数组将具有相同的索引。这是问题的说明:

1 a
2 b
3 c
4 d
Run Code Online (Sandbox Code Playgroud)
2 ''
3 c
4 d
Run Code Online (Sandbox Code Playgroud)