假设我有一个定义为这样的数组:
typeset -g POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(
os_icon
dir
vcs
newline
prompt_char
)现在,我想在my_item之后将一个项vcs插入数组中。我不知道vcs的索引是什么,我只知道我想在vcs后面插入它
我试过了
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(${POWERLEVEL9K_LEFT_PROMPT_ELEMENTS:s/vcs/vcs my_item})但出于某种原因,这是行不通的。以下内容确实适用于替代:
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(${POWERLEVEL9K_LEFT_PROMPT_ELEMENTS:s/vcs/my_item})但当然会移除风投..。很明显,我没有把空间弄对,但似乎搞错了。
发布于 2022-10-06 07:12:32
如果您知道索引,可以简单地将数组片分配给vcs的索引:
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS[2]=(vcs my_item)由于您不知道索引,但确定元素只能存在一次,只需将其赋值给第一个匹配索引:
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS[${POWERLEVEL9K_LEFT_PROMPT_ELEMENTS[(i)vcs]}]=(vcs my_item)外壳程序会话的记录,以尝试这一点:
/tmp [9:10]
❯ typeset -g POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(
os_icon
dir
vcs
newline
prompt_char
)
/tmp [9:10]
❯ echo ${POWERLEVEL9K_LEFT_PROMPT_ELEMENTS[3]}
vcs
/tmp [9:10]
❯ echo ${POWERLEVEL9K_LEFT_PROMPT_ELEMENTS[4]}
newline
/tmp [9:10]
❯ POWERLEVEL9K_LEFT_PROMPT_ELEMENTS[${POWERLEVEL9K_LEFT_PROMPT_ELEMENTS[(i)vcs]}]=(vcs my_item)
/tmp [9:10]
❯ echo ${POWERLEVEL9K_LEFT_PROMPT_ELEMENTS[3]}
vcs
/tmp [9:10]
❯ echo ${POWERLEVEL9K_LEFT_PROMPT_ELEMENTS[4]}
my_item
/tmp [9:10]
❯ echo ${POWERLEVEL9K_LEFT_PROMPT_ELEMENTS[5]}
newline
``https://stackoverflow.com/questions/73968429
复制相似问题