1

bashの任意のタイムゾーンの時間を確認するこのきちんとしたコマンドに出くわしました

TZ=US/Hawaii date

どちらが同じか

export TZ=US/Hawaii
date

最初のコマンドはどのように機能しますが、次のコマンドは機能しませんか?

test=6 echo $test
4

2 に答える 2

5

変数は、コマンドを 1 行で実行する前に展開されます。したがって、最後の例で$testは、割り当てが完了する前に展開されます。

あなたが望む効果を得ることができます:

test=6 bash -c 'echo $test'

これにより、新しいシェル プロセスが実行されます。引数が引用符で囲まれているため、変数は元のシェルでは展開されず、サブシェルは$testが設定されている環境で展開します。

于 2013-09-16T17:05:27.387 に答える
4

最初に、 への呼び出しは、その環境に置かれているdateの値を使用します。2 番目の例では、実際に実行する前に、シェルによってTZの展開が実行されます。inの環境の値は無関係です。動作するほぼ同等のものは$test echotestecho

(test=6; echo $test)
于 2013-09-16T17:06:08.080 に答える