ZSH将值视为文字字符串



作为我正在设置的ZSH主题的一部分,我需要从各种可执行目录(即/usr/bin/usr/local/bin等(中获取程序列表,然后将其传递给数组。

目前,我只是将一堆ls命令转储到一个文件中,然后从那里将该文件的每一行读取到一个数组中。

问题是,文件中的第一行是[,当我的ZSH配置试图通过set -A $progarr $progline将其设置为数组时(其中$progarr是数组,$progctr是循环中处理文件读取的迭代器(,我收到错误/home/user/.zshrc:57: not an identifier: [

有没有一种方法我可以告诉脚本";只要将$progline视为字符串,因此不要试图以任何方式解释它";?

谢谢你,

直接的问题是,您使用了$progarr而不仅仅是progarr——这意味着使用progarr的第一个元素的值,但此时它是空的,因此没有提供数组名称。本质上,命令扩展自:

set -A $progarr $progline

set -A [

并且[不是数组的有效名称,因此会出现错误。

其他问题:看起来您只是将数组设置为$progline(替换其以前的内容(,而不是附加它。解析ls的输出通常是有问题的。

我建议使用通配符直接获取列表:

set -A progarr /bin/* /sbin/* /usr/bin/* /usr/sbin/*    # Create array of commands
progarr=("${progarr[@]##*/}")    # Trim off the paths (e.g. "/bin/ls" -> "ls")

相关内容

  • 没有找到相关文章

最新更新