我想开始从单个长度的字符生成并生成所有可能的值,直到 (ZZZZZZZZZZ) 10-Zs。
我知道我可以做类似 {A..Z}{A..Z}{A..Z}.... 的事情,但我想增加外循环中字符序列的长度。 有没有办法在bash中实现这个?我尝试了下面的脚本,但问题是 for 循环命令将“{A..Z}”字面意思视为字符串。
#!/bin/bash
seq={A..Z}
cur_seq=""
for i in {0..10}; do
cur_seq=${cur_seq}${seq}
for a in $cur_seq; do
echo $a
ead kk
done
done
Bash 是一个非常糟糕的语言选择——我认为这是一个学术练习。
maybe_append() {
recurse_count=$1; shift
while IFS= read -r line; do
for arg in "$@"; do
printf '%s%s\n' "$line" "$arg"
done
done | if (( recurse_count > 1 )) then maybe_append "$((recurse_count - 1))" "$@"; else cat; fi
}
鉴于此,使用更小/更理智的数字的演示如下所示:
$ printf '%s\n' {A..C} | maybe_append 2 '' {A..C}
A
AA
AB
AC
AA
AAA
AAB
AAC
AB
ABA
ABB
ABC
AC
ACA
ACB
ACC
B
BA
BB
BC
...等等