我需要准备一个简单的脚本来生成一组元素中存储在变量中的一组元素(可n参数化)中的一组元素的可能排列,最简单的解决方案是想到的是根据所选组的长度使用几个循环。但我认为,这将是更优雅服用echo命令来产生组合的能力优势,那就是用echo生成元素的组合
echo {1,2}{1,2}
11 12 21 22
所以使用这种方法,我想实现这样做的一般方法,如使用输入参数的元素列表(例如{1,2})和元素的数量。它会是这样的:
set={1,2,3,4}
group=3
for ((i=0; i<$group; i++));
do
repetition=$set$repetition
done
因此,在这种特殊情况下,在循环结束时,重复变量的值为{1,2,3,4} {1,2,3,4} {1,2,3,4}。但是我无法找到使用这个变量来使用echo命令产生组合的方法。我已经尝试了几件事情,例如:
echo $repetition
echo $(echo $repetition)
我被困住了,我会很感激任何提示或帮助。
对于你的任务,元素的顺序似乎很重要。因此,您正在寻找一种算法来枚举输入的所有*排列*。实际上寻找产生*组合的算法的人将被这个问题误导。 – josch 2017-09-01 10:46:49
谢谢Josch,你是对的,我已经根据你的建议cha动了这个问题,使之更加清晰。 – Toni 2017-09-07 08:07:22