Bash:变量的所有组合

标签 bash unix combinations

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

我得到了以下结果:

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'`

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

相关文章:

linux - 如何让SSH命令执行超时

unix - 替换以反斜杠为前缀的单引号和双引号

c - read() 系统调用不返回 EOF

c# - 不重复的复杂排列

algorithm - 向量元素的组合

linux - bash 中的 Sed 正则表达式问题

linux - 如何获取文件夹中每个可执行文件的简要说明?

linux - 使用命令输入的 Bash 别名

combinations - 找到所有可能存在冲突的组合的数量

linux - 从 grep 中排除 .svn 目录