2013-09-16 115 views
1

我碰到這個整齊的命令來檢查任何時區的時間在bash

TZ=US/Hawaii date 

這確實一樣

export TZ=US/Hawaii 
date 

如何第一個命令的工作,而下面的命令不起作用?

test=6 echo $test 

回答

5

變量之前的行執行的命令膨脹。因此,在最後一個示例中,$test在分配完成之前展開。

你可以得到你想要的效果:

test=6 bash -c 'echo $test' 

這執行一個新的外殼工藝。由於引用了參數,因此變量不會被原始shell擴展,子shell會在設置了$test的環境中擴展它。

4

第一次,date的調用使用放置在其環境中的值TZ。在第二個,$test的擴展由執行的外殼echo實際運行。 testecho的環境中的值是無關緊要的。近似等效的工作將是

(test=6; echo $test) 
相關問題