如何在fish中生成字母序列表shell
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
如何在鱼中做到这一点 shell?
Fish 不支持 brace expansion 中的范围,仅支持逗号分隔值:{a,b,c}
。
因此,我们不得不寻找能够生成这样序列的命令。例如,您可以使用 Perl:
for c in (perl -e '$,="\n"; print ("a" .. "z")')
printf ">> %s\n" "$c"
end
其中 $,
是输出字段分隔符。
输出
>> a
>> b
...(skipped)
>> y
>> z
您可能会发现 this table 有用。
Linux 对此有 seq
命令,它适用于 fishshell:
$ for f in (seq 1 10)
echo $f
end
1
2
3
4
5
6
7
8
9
10
$
一种方法是使用 printf 和 seq。
echo -e (printf '\\x%x\n' (seq 97 122))
这通过生成“\x61 \x62 \x63 ... \x7a”来实现,然后 "echo -e" 将其解释为十六进制字符代码。
专门生成可以循环使用的a-z序列,我认为最优雅简洁的解决方案是直接使用bash和fmt(大多数unix-like环境)。您甚至不需要 Perl,它的可读性更高:
for c in (bash -c "echo {a..z}" | fmt -w1)
echo "hello $c"
end
逻辑是这样的:
fish shell 中的 for-loop 循环遍历数组值和行。如果您可以在其单独的行中生成每个 a-z,则可以在 fish 中循环使用它。
命令 bash -c "echo {a..z}"
会在 fish 中给你一个长字符串:
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
命令 fmt -w1
会将 space-separated 字符串切割成行。
结果:
hello a
hello b
hello c
... (skipped)
hello z
这太棒了,因为您可以利用相同的原则在 fish 中重用 bash 语法。对我来说似乎真的很灵活:-)
在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
如何在鱼中做到这一点 shell?
Fish 不支持 brace expansion 中的范围,仅支持逗号分隔值:{a,b,c}
。
因此,我们不得不寻找能够生成这样序列的命令。例如,您可以使用 Perl:
for c in (perl -e '$,="\n"; print ("a" .. "z")')
printf ">> %s\n" "$c"
end
其中 $,
是输出字段分隔符。
输出
>> a
>> b
...(skipped)
>> y
>> z
您可能会发现 this table 有用。
Linux 对此有 seq
命令,它适用于 fishshell:
$ for f in (seq 1 10)
echo $f
end
1
2
3
4
5
6
7
8
9
10
$
一种方法是使用 printf 和 seq。
echo -e (printf '\\x%x\n' (seq 97 122))
这通过生成“\x61 \x62 \x63 ... \x7a”来实现,然后 "echo -e" 将其解释为十六进制字符代码。
专门生成可以循环使用的a-z序列,我认为最优雅简洁的解决方案是直接使用bash和fmt(大多数unix-like环境)。您甚至不需要 Perl,它的可读性更高:
for c in (bash -c "echo {a..z}" | fmt -w1)
echo "hello $c"
end
逻辑是这样的:
fish shell 中的 for-loop 循环遍历数组值和行。如果您可以在其单独的行中生成每个 a-z,则可以在 fish 中循环使用它。
命令
bash -c "echo {a..z}"
会在 fish 中给你一个长字符串: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
命令
fmt -w1
会将 space-separated 字符串切割成行。
结果:
hello a
hello b
hello c
... (skipped)
hello z
这太棒了,因为您可以利用相同的原则在 fish 中重用 bash 语法。对我来说似乎真的很灵活:-)