1

TCLで環境変数を使用しようとすると問題が発生します。

そのため、TCLスクリプトが後でそれらを使用できるように、一連の環境変数をエクスポートするシェルスクリプトがあります。

set_vars.shには、次のコードが含まれています。

export TEST_ENV_VAR=Test

および次の作品:

%puts $ env(TEST_ENV_VAR)

テスト

しかし、環境変数を演算子または引用符で囲むと、何も返されません。

%puts "$ env(TEST_ENV_VAR)is in TEST_ENV_VAR"

TEST_ENV_VARにあります

誰もが問題が何であるか知っていますか?どんな助けでも大歓迎です。

御時間ありがとうございます。

4

1 に答える 1

4

あなたが私たちに見せていない何かがあるに違いありません:

$ export TEST_ENV_VAR=Test
$ tclsh
% puts $env(TEST_ENV_VAR)
Test
% puts "$env(TEST_ENV_VAR) is in TEST_ENV_VAR"
Test is in TEST_ENV_VAR

これenvグローバル変数であるため、プロシージャで使用する場合は、次のように宣言する必要があります。global

$ tclsh
% proc show_env1 {varname} {
    puts "does not work: $env($varname)"
}
% show_env1 TEST_ENV_VAR
can't read "env(TEST_ENV_VAR)": no such variable
% proc show_env2 {varname} {
    global env
    puts "works: $env($varname)"
}
% show_env2 TEST_ENV_VAR
works: Test
% proc show_env3 {varname} {
    puts "also works: $::env($varname)"
}
% show_env3 TEST_ENV_VAR
also works: Test
于 2013-03-12T22:16:30.620 に答える