这是我想要实现的一个例子。
#!/bin/bash
func2() {
myarray=("e" "f")
}
func1() {
myarray=("c" "d")
for i in [1..10]
do
func2 &
done
}
myarray=("a" "b")
func1
echo "${myarray[@]}"
最后的回声应该是
e f
但它最终成为
c d
因为 & 当我调用 func2 时。如果我取出 & 它会按预期运行。这是我用来一次对多个服务器进行 ssh 调用的更复杂脚本的概念证明。我需要 & 的多线程能力,但由于它似乎在子 shell 中运行,它的所有变量都是本地的?!?!?