[英]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.