6

我是 TCL 脚本和 shell 脚本的新手。我想从 shell 脚本调用一个 TCL 脚本。我已经尝试如下。

#!/bin/sh

for i in {1..5}
do
   my_script
   test_script
done

如果我运行脚本,它会抛出如下错误,

./sample.sh: line 5: my_script: command not found
./sample.sh: line 5: test_script: command not found

谁能帮我解决这个问题?

提前致谢。

4

3 回答 3

7

如果在您的文件中找不到它们,您$PATH必须提供脚本的路径,例如:

./my_myscript         # current directory
/path/to/test_script  # absolute path
于 2013-05-11T15:04:41.440 回答
7

如果您还没有使您的脚本可执行(使用chmod +x),那么您需要使用:

tclsh my_script.tcl

或者可能tclsh8.5 /path/to/script.tcl或许多变化。

如果您使脚本可执行,请检查包含脚本的目录是否在您的PATH(如果没有,请使用脚本的完整文件名或调整您的PATH),并且您有合适的#!行。通常推荐的一种是:

#!/usr/bin/env tclsh8.5

因为这将在您的路径中搜索tclsh8.5可执行文件,而不是对其进行硬编码。

于 2013-05-11T16:41:32.117 回答
0

man tclsh. 我猜第二块回答了你的问题。

如果您在第一行为的文件中创建 Tcl 脚本, #!/usr/local/bin/tclsh 那么如果您将文件标记为可执行文件,则可以直接从 shell 调用该脚本文件。[...]

更好的方法是使用以下三行开始您的脚本文件:

 #!/bin/sh
 # the next line restarts using tclsh \
 exec tclsh "$0" ${1+"$@"}

与上一段中的方法相比,这种方法具有三个优点 [...]

您应该注意,安装 tclsh 并将其版本号作为名称的一部分也是常见的做法。这样做的优点是允许同一系统上同时存在多个 Tcl 版本,但也有使其更难安装的缺点。编写跨不同版本的 Tcl 统一启动的脚本。

于 2017-02-09T09:39:16.213 回答