我在研究这个:
GNU bash, version 4.1.2(1)-release (x86_64-redhat-linux-gnu)
我有一个剧本如下:
#!/bin/bash
e=2
function test1() {
e=4
echo "hello"
}
test1
echo "$e"
结果是:
hello
4
但是如果我将函数的结果赋给一个变量,那么全局变量 e
就不会被修改:
#!/bin/bash
e=2
function test1() {
e=4
echo "hello"
}
ret=$(test1)
echo "$ret"
echo "$e"
返回:
hello
2
在这个例子中,我听说过 使用 eval,所以我在 test1
中这样做:
eval 'e=4'
但结果是一样的。
你能解释一下为什么它没有被修改吗?如何保存 ret
中 test1
函数的回声并修改全局变量?