ZSH for循环数组变量问题

时间:2012-06-04 20:03:04

标签: arrays shell unix for-loop zsh

我在ZSH工作,但我确信BASH指令也可能有所帮助。我需要一个for循环,通过存储在数组lw中的值,然后根据存储在数组中的名称启动一个shell脚本。

到目前为止,这是我提出的:

$lw=('plugin1' 'plugin2' 'plugin3')

for i in $lw;
  do . ~/Library/Rogall/plugins/$lw[$i]/lw.prg end;
done

它只是在运行说它找不到〜/ Library / Rogall / plugins // lw.prg时给我一个错误,所以看来它只是忽略了我的变量all togethor。

我搞砸了哪些想法?

3 个答案:

答案 0 :(得分:36)

实际上比这简单得多:

lw=('plugin1' 'plugin2' 'plugin3')

for i in $lw; do
  . ~/Library/Rogall/plugins/$i/lw.prg end
done

总结:

  • 分配给foo,而不是$foo(shell会尝试展开$foo并分配给它展开的任何内容;通常没用;
  • 直接使用循环变量;它包含数组而不是 index

答案 1 :(得分:20)

为什么要使用数组呢?这可以很容易地在便携式中完成:

lw='plugin1 plugin2 plugin3'

for i in $lw;
  do . ~/Library/Rogall/plugins/$i/lw.prg end
done

请注意,要在zsh中使用此功能,您需要使用以下内容使zsh做正确的事:set -o shwordsplit

答案 2 :(得分:3)

我遇到了这样的循环

import numpy as np

errors = np.array([])
for i in range(7):
    errors = np.append(errors, i)
print(errors)

反复无法按我的要求工作。我会收到类似errors = [] for i in range(7): errors +=[i] print(errors) 的错误或类似

的输出
for i in (1 2 3 4); do echo $i; done

无论我如何扭曲它,而不是我想要的

zsh: unknown file attribute: 1

要获得所需的行为,我必须从循环定义中删除1 2 3 4 关键字

1
2
3
4