给定一个数字增加大括号扩展的数量
Increase the amount of brace expansions given a number
我有一个使用大括号扩展的程序:
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 中执行此操作?
这是一种方法。随着 a..z
:
$ a2z() {
k=""
n=
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
因为它显示了 N 位的每个排列。
$ bitperms() {
k=""
n=
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
我有一个使用大括号扩展的程序:
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 中执行此操作?
这是一种方法。随着 a..z
:
$ a2z() {
k=""
n=
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
因为它显示了 N 位的每个排列。
$ bitperms() {
k=""
n=
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