我想生成一组变量的所有组合。

我得出以下结论:

a="A"
b="B"
c="C"
d="D"
e="E"
f="F"

echo {$a,$b,$c,$d,$e,$f} $a{$b,$c,$d,$e,$f} $b{$c,$d,$e,$f} $c{$d,$e,$f} $d{$e,$f} $e$f $a$b{$c,$d,$e,$f} $b$c{$d,$e,$f} $c$d{$e,$f} $d$e$f $a$b$c$d{$e,$f} $b$c$d$e$f $a$b$c$d$e$f

这将产生以下输出:
A B C D E F AB AC AD AE AF BC BD BE BF CD CE CF DE DF EF ABC ABD ABE ABF BCD BCE BCF CDE CDF DEF ABCDE ABCDF BCDEF ABCDEF

在bash中,有没有更简洁,更优雅的方法?

最佳答案

与脚本

echo {'','a'}{'','b'}{'','c'}{'','d'}{'','e'}{'','f'}

你会得到
 f e ef d df de def c cf ce cef cd cdf cde cdef b bf be bef bd bdf bde bdef bc bcf bce bcef bcd bcdf bcde bcdef a af ae aef ad adf ade adef ac acf ace acef acd acdf acde acdef ab abf abe abef abd abdf abde abdef abc abcf abce abcef abcd abcdf abcde abcdef

尽管顺序不正确,但这确实可以满足您的需求。所以你可以使用
echo {'',$a}{'',$b}{'',$c}{'',$d}{'',$e}{'',$f}

如果您不想在脚本中键入那么多的{'',$x},您甚至可以使用eval:
eval `echo echo "{'',$"{a..f}"}" | sed 's/ //2g'`

关于重击:变量的所有组合,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57727645/

10-10 17:37