使用bash生成变体

时间:2012-09-23 20:09:03

标签: bash

为下一个代码寻找更好的解决方案:

for i in a b c
do
  for j in A B C
  do
    for k in 1 2 3
    do
      echo "$i$j$k"
    done
  done
done

当然,这是一个更简单的解决方案。

2 个答案:

答案 0 :(得分:12)

这有点简单

echo {a,b,c}{A,B,C}{1,2,3}

或者每行想要一个,所以

echo {a,b,c}{A,B,C}{1,2,3} | xargs -n1

顺便说一句,你可以使用上面的bracer扩展例如保存键盘输入,例如当需要制作备份文件时,例如:

cp /some/long/path/And_very-ugly-fileName{,.copy}

将在没有第二个文件名输入的情况下生成/some/long/path/And_very-ugly-fileName.copy

答案 1 :(得分:6)

使用brace expansion

echo {a,b,c}{A,B,C}{1,2,3}

这将在{a,b,c}{A,B,C}{1,2,3}集之间打印所有可能的组合。

甚至更简单,使用范围:

echo {a..c}{A..C}{1..3}

如果您想每行打印每个组合,请使用for - 循环:

for i in {a..c}{A..C}{1..3}; do echo $i; done