为什么var
在第一种情况下不会改变而在第二种情况下会发生变化?
#!/bin/bash
var=0
changeVar()
{
var=1
}
第一种情况:
tmp=$(changeVar)
echo "var = $var" // var = 0
第二种情况:
changeVar
echo "var = $var" // var = 1
答案 0 :(得分:6)
manual会告诉你:
命令替换,用括号分组的命令和 异步命令在子shell环境中调用 shell环境的重复。
在第一种情况下,$(...)
(即命令替换)导致在子shell 中调用该函数。因此,变量值的变化是不可见的。