【问题标题】:How do I print TCL environment variable in my bash script如何在我的 bash 脚本中打印 TCL 环境变量
【发布时间】:2021-05-11 16:58:26
【问题描述】:

TCL 脚本

set ::env(foo) "bar"

bash 脚本

echo ${env(foo)}
echo $foo

我可以在 TCL 脚本中打印环境变量,但由于某种原因,我无法在我的 bash 脚本中打印环境变量。我做错了什么?

【问题讨论】:

  • 这两个脚本有什么关系?
  • 如果foo 在你的shell 环境中,它就是echo "$foo"。在启动时,shell 只是为环境中的每个名称定义一个常规的 shell 变量,形成一个有效的 shell 标识符。
  • 跟进 Shawn 的评论:如果您从 shell 调用 Tcl 脚本,并且您希望 env var 出现在您的 shell 中,则它不会发生 - 不允许子进程改变其父母的环境。

标签: bash tcl


【解决方案1】:

如果您的 bash 脚本包含这样的内容(我们称之为 showenv

#! /bin/bash

echo $foo

和你的 tcl

#! /usr/bin/tclsh

set ::env(foo) bar

exec ./showenv >>& /dev/tty

然后,showenv 将显示

bar

也就是说,tcl 脚本为其子进程设置环境。

【讨论】:

  • 环境变量从不自动从子到父。相反,必须写一些东西(标准输出或文件),调用者将其解释为设置环境变量的指令
猜你喜欢
  • 2016-10-03
  • 1970-01-01
  • 1970-01-01
  • 2022-10-21
  • 1970-01-01
  • 2011-03-05
  • 1970-01-01
  • 2013-11-15
  • 1970-01-01
相关资源
最近更新 更多