小编sh4*_*473的帖子

使用 zsh 将新值直接分配给数组中值的字符索引

如果我有一个字符串数组并且我想在一个值中更改单个字符,我可以这样做:

$ array=(hello world)
$ array[2]=${array[2]:0:2}X${array[2]:3}
$ echo $array[2]
woXld
Run Code Online (Sandbox Code Playgroud)

即使此解决方案有效,它对于很长的字符串也很慢,因为它实际上在索引处重新分配了值,并且必须在更改字符之前和之后扩展原始值的两侧。

虽然可以处理数组中单个值的字符索引:

$ echo ${array[2][3]}
X
Run Code Online (Sandbox Code Playgroud)

并将新值分配给标量变量的字符索引:

$ string='hello world'
$ string[9]=X
$ echo $string
hello woXld
Run Code Online (Sandbox Code Playgroud)

类似的语法不适用于数组:

$ array[2][3]=X
zsh: no matches found: array[2][3]=X
Run Code Online (Sandbox Code Playgroud)

有没有办法比第一种方法更快地做我想做的事?

zsh array shell-script variable

5
推荐指数
1
解决办法
264
查看次数

标签 统计

array ×1

shell-script ×1

variable ×1

zsh ×1