我在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。
我搞砸了哪些想法?
答案 0 :(得分:36)
实际上比这简单得多:
lw=('plugin1' 'plugin2' 'plugin3')
for i in $lw; do
. ~/Library/Rogall/plugins/$i/lw.prg end
done
总结:
foo
,而不是$foo
(shell会尝试展开$foo
并分配给它展开的任何内容;通常没用; 答案 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