首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在shell脚本中使用tclsh时,exec没有输出

在shell脚本中使用tclsh时,exec没有输出
EN

Stack Overflow用户
提问于 2016-05-19 21:27:13
回答 1查看 145关注 0票数 0

我这里有个奇怪的情况。我需要在脚本getValue.itcl上运行exec,但是如果我试图以内联输入重定向的方式运行它,我将得不到任何输出。如果我使用了错误的术语,很抱歉。

内联使用它有助于此脚本的其他方面,否则我将需要分开各个部分。我使用的是TCL8.0(没有这个选项)。

示例:当我使用作为tclsh重启的shell脚本时,这是有效的。

代码语言:javascript
复制
#!/bin/sh
#

# \
cd 'dirname $0'
# Next line restarts as tclsh \
exec tclsh 'basename $0' $*

proc Main { } {
    set val [exec getValue.itcl PARAMETER]
    puts "$val"
}
Main
exit

但是如果我在脚本中以不同的方式运行它,它将无法工作。

这不起作用:

代码语言:javascript
复制
#!/bin/sh
#

tclsh << EOSCRIPT

    set val [exec getValue.itcl PARAMETER]
    puts "$val"
EOSCRIPT

exit 0

我不会得到任何输出,我看不出在第一个方法中使用tclsh与在第二个方法中使用tclsh有什么不同。

谢谢

EN

回答 1

Stack Overflow用户

发布于 2016-05-20 03:12:43

我想通了,愚蠢的错误。

在这里,使用<<被称为document...heredoc?

我在过去用过一些,但用得不多,我翻出了一个更老的例子,并意识到变量在被发送之前是扩展的。我必须逃离他们。

这是可行的:

代码语言:javascript
复制
#!/bin/sh
#

tclsh << EOSCRIPT

    set val [exec getValue.itcl PARAMETER]
    puts "\$val"
EOSCRIPT

exit 0
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37324650

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档