bashの任意のタイムゾーンの時間を確認するこのきちんとしたコマンドに出くわしました
TZ=US/Hawaii date
どちらが同じか
export TZ=US/Hawaii
date
最初のコマンドはどのように機能しますが、次のコマンドは機能しませんか?
test=6 echo $test
変数は、コマンドを 1 行で実行する前に展開されます。したがって、最後の例で$test
は、割り当てが完了する前に展開されます。
あなたが望む効果を得ることができます:
test=6 bash -c 'echo $test'
これにより、新しいシェル プロセスが実行されます。引数が引用符で囲まれているため、変数は元のシェルでは展開されず、サブシェルは$test
が設定されている環境で展開します。
最初に、 への呼び出しは、その環境に置かれているdate
の値を使用します。2 番目の例では、実際に実行する前に、シェルによってTZ
の展開が実行されます。inの環境の値は無関係です。動作するほぼ同等のものは$test
echo
test
echo
(test=6; echo $test)