[英]How to generate letter sequence list in fish shell
例如,在 bash 中,您可以轻松地将字母序列生成为“{a..z}”
$ echo {a..z}
a b c d e f g h i j k l m n o p q r s t u v w x y z
如何在鱼壳中做到这一点?
一种方法是使用 printf 和 seq。
echo -e (printf '\\\x%x\n' (seq 97 122))
这通过生成“\\x61 \\x62 \\x63 ... \\x7a”来工作,然后由“echo -e”解释为十六进制字符代码。
特别是为了生成可以循环使用的 az 序列,我认为最优雅和简洁的解决方案是直接使用 bash 和fmt (在大多数类 unix 环境中都可用)。 你甚至不需要 Perl 并且它的可读性更强:
for c in (bash -c "echo {a..z}" | fmt -w1)
echo "hello $c"
end
逻辑是这样的:
fish shell 中的 for 循环循环遍历数组值和行。 如果您可以在单独的行中生成 az 每个,则可以在 fish 中循环。
命令bash -c "echo {a..z}"
会给你一个鱼的长字符串:
abcdefghijklmnopqrstu vwxyz
命令fmt -w1
会将空格分隔的字符串切割成行。
结果:
hello a
hello b
hello c
... (skipped)
hello z
这很棒,因为您可以利用相同的原理在 fish 中重用 bash 语法。 对我来说似乎非常灵活:-)
Linux 有用于此的seq
命令,它适用于 fishshell:
$ for f in (seq 1 10)
echo $f
end
1
2
3
4
5
6
7
8
9
10
$
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.