我遇到了这个简洁的命令来检查 bash 中任何时区的时间
TZ=US/Hawaii date
与
export TZ=US/Hawaii
date
第一个命令如何工作,而以下命令不起作用?
test=6 echo $test
变量在执行一行中的命令之前被展开。所以在最后一个例子中,$test
在赋值完成之前展开。
您可以通过以下方式获得您想要的效果:
test=6 bash -c 'echo $test'
这将执行一个新的 shell 进程。由于引用了参数,因此原始外壳不会扩展变量,子外壳会在$test
设置的环境中扩展它。
首先,对使用的调用date
将其值TZ
放入其环境中。第二,在实际运行之前$test
由shell执行扩展。in的环境值无关紧要。一个近乎等效的工作将是 echo
test
echo
(test=6; echo $test)