为什么值变量的功能没有改变?

时间:2013-09-21 08:37:26

标签: bash

为什么var在第一种情况下不会改变而在第二种情况下会发生变化?

#!/bin/bash
var=0

changeVar()
{
  var=1
}

第一种情况:

tmp=$(changeVar)
echo "var = $var"         // var = 0

第二种情况:

changeVar
echo "var = $var"         // var = 1

1 个答案:

答案 0 :(得分:6)

manual会告诉你:

  

命令替换,用括号分组的命令和   异步命令在子shell环境中调用   shell环境的重复。

在第一种情况下,$(...)(即命令替换)导致在子shell 中调用该函数。因此,变量值的变化是不可见的。