gpt4 book ai didi

linux - 使用 ZSH 评估数组内容时顺序错误

转载 作者:太空宇宙 更新时间:2023-11-04 12:18:20 24 4
gpt4 key购买 nike

考虑以下示例脚本:

#!/bin/zsh
typeset -A cmd

cmd[0]="mkdir"
cmd[1]="-p"
cmd[2]="to to/tata"
cmd[3]="anotherfolder"

我正在尝试评估 cmd 的内容(并保持参数分离,所以我想创建“to/tata”和“anotherfolder”)但是当我这样做时:

${cmd}

它计算内容,但顺序错误。由于某种原因,它评估:

anotherfolder mkdir -p "to to/tata"

您是否知道为什么以及如何使其遵循自然顺序?


如果你想知道我真正想做什么(因为可能有更简单的方法来做我想做的事),我创建了一个小的 shell 脚本,它接受一个命令作为参数,并在一个特定的文件夹中执行它.例如:

myscript mkdir -p "to to/tata"

在我的脚本中,我只需要:

$@

执行 mkdir 命令。但是现在,我正在尝试使用特定的分隔符(在我的例子中是“--”)传递多个命令,这样

myscript mkdir -p "to to/tata" -- touch "to to/tata/myfile"

将执行这两个命令。为此,我认为首先解析 $@ 并创建包含最多“--”的每个参数的数组会更容易。但现在我卡在了如何执行数组上......

最佳答案

问题是我使用了关联数组 (typedef -A) 而不是标准数组。

正确的解决方案是:

cmd=()
# indexes start at 1
cmd[1]="mkdir"
cmd[2]="-p"

关于linux - 使用 ZSH 评估数组内容时顺序错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46786351/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com