Bash允许我编写语句
$ for i in {h..k} ; do echo $i ; done
但是zsh只允许数字列表扩展,例如{8..13}
。
什么是最好的解决方法?像 seq 这样的字符......
答案 0 :(得分:26)
zsh$ setopt BRACE_CCL
zsh$ echo {a-k}
a b c d e f g h i j k
zsh$ echo {1-9}
1 2 3 4 5 6 7 8 9
答案 1 :(得分:5)
由于这仍然是谷歌的最高结果,因此更新了答案:
current release支持bash样式{c1..c2}
,其中c1
和c2
是字符:
“
{c1..c2}
”形式的表达式,其中c1
和c2
是单个字符(可能是多字节字符),会扩展为{{1}范围内的每个字符1}}到c1
内部使用的任何字符序列。对于代码点低于128的字符,这是US ASCII(这是大多数用户需要的唯一情况)。如果任何插入字符不可打印,则使用适当的引用使其可打印。如果字符序列反转,则输出的顺序相反,例如“c2
”被替换为“{d..a}
”。
这绝对存在于5.0.7之后。我似乎无法在zsh release history中找到这个,但first archived version documenting it表示它是在2012年7月到2014年11月之间推出的。