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