无法从bash shell脚本执行Tcl脚本

时间:2011-10-21 06:34:33

标签: bash tcl execution

我在shell脚本中调用bash shell脚本和tcl脚本时遇到了一个相对奇怪的问题。

从透视角度来看,我有一个shell脚本,可以生成一些其他shell脚本以及tcl脚本。一些生成的shell脚本使用tclsh命令调用tcl脚本。 这些文件被创建并存储在一个目录中,该目录也是由初始shell脚本创建的,它生成文件以及存储这些文件的文件夹。

问题在于生成的shell脚本,它调用tclsh来运行tcl脚本。即使生成文件并且shell脚本具有要执行的权限,shell的响应也是无法找到嵌入在shell脚本中的tcl文件。

但是,该文件存在,我可以使用vi和gedit,RHEL 9.0或Centos 5.7平台打开它。但是,当我从创建的目录中取出相同的shell脚本时,不会出现此错误。你能提出任何想法吗?我也检查了目录权限,但它们似乎没问题。我还检查了shell脚本中是否有额外的字符,但我没有找到任何内容。

2 个答案:

答案 0 :(得分:1)

很难说出你的描述到底出了什么问题;您遗漏了准确诊断问题所需的所有信息。然而...

你的PATH上有tclsh,但是你的脚本虽然被chmodded为可执行文件但没有运行?这意味着您的#!行存在问题。目前的最佳做法是使用以下内容:

#!/usr/bin/env tclsh

那将在你的PATH中搜索tclsh并使用它,它比任何替代扭曲都容易得多。

可能导致问题的另一件事是你的Tcl程序包含:

package require Tcl 8.5

然而路径上tclsh使用的Tcl版本是8.4。我已经多次看过这个问题了,如果那是你的问题,你需要确保安装了正确的Tcl rpm 来更新你的#!行:

#!/usr/bin/env tclsh8.5

同样适用于Tcl 8.6,但在这种情况下,可能需要从源代码构建自己的源代码并将其安装在合适的位置。 (Tcl 8.6仍然只适用于专业人士。)


(问题是RHEL - 以及追踪RHEL的Centos - 在Tcl方面非常保守。虽然这个原因并不与这个答案密切相关。)

答案 1 :(得分:0)

问题可能就像你没有“。”一样简单。在你的路径?如果不是像“myscript.tcl”那样调用你的脚本而是将其称为“./myscript.tcl”或“/absolute/path/to/myscript.tcl”,该怎么办?

相关问题