例子:
$ eval echo "{x,y,z}\ --opt\; "
x --opt; y --opt; z --opt;
假设第二个列表是{1,2,3}
并且它的长度等于第一个(初始)列表的长度。
问题:
- 制作方法
bash
:
x --opt 1; y --opt 2; z --opt 3;
- 如何
bash
制作(即从{x,y,z}
列表中引用元素):
x --opt x; y --opt y; z --opt z;
单线是优选的。
例子:
$ eval echo "{x,y,z}\ --opt\; "
x --opt; y --opt; z --opt;
假设第二个列表是{1,2,3}
并且它的长度等于第一个(初始)列表的长度。
问题:
bash
:x --opt 1; y --opt 2; z --opt 3;
bash
制作(即从{x,y,z}
列表中引用元素):x --opt x; y --opt y; z --opt z;
单线是优选的。
大括号扩展将创建所有可能的对,它不会并行遍历两个列表:
要产生所需的输出,您需要使用其他东西。例如,循环数组的索引:
或者,使用关联数组:
正如 choroba指出的那样, using
{x..z}' --opt '{1..3}';'
会生成所有可能的字符串组合。从所有可能的组合列表(从 1 到 9)中,我们需要每四个组合,即 1、5 和 9。
或者,使用数组,获取元素 0、4 和 8。
请注意,我永远不会编写像这样的真正代码,并且上面的代码生成的字符串实际上对于用作真正的命令/参数是无用的,因为它们需要由 shell 显式拆分。
该代码纯粹是作为一个有趣的花絮。