2013-09-21 85 views
1

爲什麼var在第一種情況下沒有變化,在第二種情況下變化?爲什麼值變量在函數中沒有改變?

#!/bin/bash 
var=0 

changeVar() 
{ 
    var=1 
} 

第一種情況:

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

第二種情況:

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

回答

6

manual會告訴你:

命令替換,用括號分組命令, asynchronou s命令在子shell環境中調用,該子環境是shell環境的副本。

在第一種情況中,$(...)(即命令替換)導致函數在子shell被調用。因此,變量的值的變化是不可見的。

相關問題