((zsh括号扩展| seq)用于字符列表-如何?

问题描述 投票:14回答:2

Bash允许我编写语句,

$ for i in {h..k} ; do echo $i ; done

但是zsh仅允许数字列表扩展,例如{8..13}

最佳解决方法是什么?类似字符的[[seq ...

zsh character brace-expansion seq
2个回答
7
投票
因为这仍然是Google的最佳搜索结果,所以更新了答案:

current release支持bash样式{c1..c2},其中c1c2是字符:

['C0]'形式的表达式,其中{c1..c2}c1是单个字符(可以是多字节字符),将扩展为从c2c1的任何字符字符序列在内部使用。对于代码点低于128的字符,这是美国ASCII(这是大多数用户唯一需要的情况)。如果任何中间字符不可打印,则使用适当的引号使其变为可打印。如果字符顺序相反,则输出顺序相反,例如“ c2”被替换为“ {d..a}”。

这肯定在5.0.7起。我似乎找不到在d c b a中引入它的时间,但是zsh release history表示它是在2012年7月至2014年11月之间引入的。


27
投票
first archived version documenting it
来自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

BRACE_CCL

用大括号括起来的表达式,否则不会大括号扩展到所有词的有序列表字符。参见ZSH Documentation

© www.soinside.com 2019 - 2024. All rights reserved.