我有一个设置了一些变量的tcl文件。我想将这个tcl文件导入我的shell脚本,以便在那里使用它们。
当我做源<filename>.tcl
并回显变量时,它抱怨说找不到变量。
任何帮助将不胜感激。
答案 0 :(得分:0)
您不能在shell脚本中使用tcl变量。尽管source
似乎有用,但它不会按照你的想法去做。当您使用shell脚本中的source
命令时,它将尝试将该文件的内容解释为shell脚本。
答案 1 :(得分:0)
这是......令人费解的
这是设置变量的Tcl脚本:
$ cat > vars.tcl
set var "this is a Tcl value"
让我们看看我们是否可以使用shell语法输出Tcl:
$ echo 'source vars.tcl; foreach _v {var} {puts "$_v=\"[set $_v]\""}' | tclsh
var="this is a Tcl value"
到目前为止一切顺利。现在,用bash:
$ echo "${var:-var is unset}"
var is unset
$ . <(echo 'source vars.tcl; foreach _v {var} {puts "$_v=\"[set $_v]\""}' | tclsh)
$ echo "${var:-var is unset}"
this is a Tcl value
如果您使用的是plain / bin / sh
$ echo "${var:-var is unset}"
var is unset
$ . <(echo 'source vars.tcl; foreach _v {var} {puts "$_v=\"[set $_v]\""}' | tclsh)
sh: 1: Syntax error: "(" unexpected
$ eval "$(echo 'source vars.tcl; foreach _v {var} {puts "$_v=\"[set $_v]\""}' | tclsh)"
$ echo "${var:-var is unset}"
this is a Tcl value
这假设您的Tcl脚本除了设置变量之外什么都不做,或者您可以使用它来获取变量集;并且变量值不包含双引号。