Как экспортировать переменные из Bash в tcl? - PullRequest
0 голосов
/ 27 июня 2018

У меня есть переменные A, B и C.

Я написал

export A=$A
export B=$B
export C=$C

Не уверен, как перенести переменные в скрипт tcl. В настоящее время я написал в сценарии tcl

puts "$A == $::env(A)"
puts "$B == $::env(B)"
puts "$C == $::env(C)"

Но это не работает. Я пробовал с и без первого $.

Ответы [ 2 ]

0 голосов
/ 28 июня 2018

Есть два пути. Либо вы экспортируете переменную (есть несколько способов сделать это), либо вы назначаете ее как часть вызова для tclsh. Использование export:

export B="b"
echo 'puts "the B environment variable is $::env(B)"' | tclsh
B="b"
export B
echo 'puts "the B environment variable is $::env(B)"' | tclsh

Назначение как часть вызова (NB: без точек с запятой , а присвоение переменной близко к фактическому вызову tclsh):

echo 'puts "the B environment variable is $::env(B)"' | B="b" tclsh

Для чего-либо сложного или большого, старайтесь избегать передачи его через переменные окружения (или аргументы командной строки). Использование файлов работает лучше в этих случаях. Для чего-либо секрет НЕ ИСПОЛЬЗУЙТЕ либо аргументы командной строки или переменные среды , так как ни один из них не является безопасным механизмом связи, кроме файлов (с соответствующими разрешениями, в том числе для содержащий каталог) достаточно безопасны.

0 голосов
/ 28 июня 2018

Любой способ предназначен для работы:

$ export A="a"
$ echo "puts $::env(A)" | tclsh
a

или

$ export B="b"; echo "puts $::env(B)" | tclsh
b

или

$ echo "puts $::env(C)" | C="c" tclsh
c
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...