给定数量增加支撑扩展量

时间:2018-08-21 15:09:46

标签: bash brace-expansion

我有一个使用大括号扩展的程序:

for X in {a..z}
    do echo $X;
done

我想通过提供的数字来增加括号扩展中使用的字母数量。例如,如果提供数字3:

for X in {a..z}{a..z}{a..z}
    do echo $X;
done

如果提供了数字5:

for X in {a..z}{a..z}{a..z}{a..z}{a..z}
    do echo $X;
done

如何在bash中执行此操作?

1 个答案:

答案 0 :(得分:0)

这是一种方式。使用a..z

$ a2z() { 
  k=""
  n=$1
  while [ $n -gt 0 ]
  do
    k="{a..z}$k"
    let n="$n-1"
  done
  echo $(eval "echo $k")
}
$ for X in $(a2z 3)
do echo $X;
done
aaa
aab
aac
...

使用0..1时,Kinda很有用,或者至少很有趣,因为它显示了N位的每个排列。

$ bitperms() {
  k=""
  n=$1
  while [ $n -gt 0 ] 
  do
    k="{0..1}$k"
    let n="$n-1"
  done
  echo $(eval "echo $k")
}
$ bitperms 4
0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
$ for X in $(bitperms 2);do echo "$X";done
00
01
10
11