Fish:遍历字符串

Den*_*nis 4 shell fish

你会如何遍历在一个字符串鱼贝?

不幸的是,遍历字符串并不像遍历列表那样直接:

? for c in a b c
      echo $c
  end
a
b
c

? for c in abc
      echo $c
  end
abc
Run Code Online (Sandbox Code Playgroud)

Den*_*nis 8

forfish 中的循环对列表进行操作。

for VARNAME in [VALUES...]; COMMANDS...; end
Run Code Online (Sandbox Code Playgroud)

内置string命令(自 v2.3.0 起)可用于将字符串拆分为字符列表。

? string split '' abc
a
b
c
Run Code Online (Sandbox Code Playgroud)

输出是一个列表,因此数组操作将起作用。

? for c in (string split '' abc)
      echo $c
  end
a
b
c
Run Code Online (Sandbox Code Playgroud)

使用索引迭代字符串的更复杂示例。

? set --local chars (string split '' abc)
  for i in (seq (count $chars))
      echo $i: $chars[$i]
  end
1: a
2: b
3: c
Run Code Online (Sandbox Code Playgroud)