如何从shell脚本运行TCL脚本?

时间:2013-05-11 14:53:49

标签: shell tcl

我是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

任何人都可以帮我解决这个问题吗?

提前致谢。

3 个答案:

答案 0 :(得分:6)

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

./my_myscript         # current directory
/path/to/test_script  # absolute path

答案 1 :(得分:4)

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

tclsh my_script.tcl

或者tclsh8.5 /path/to/script.tcl或许多变体。

如果使脚本可执行,请检查包含该脚本的目录是否在PATH上(如果没有,请使用脚本的完整文件名或调整{{1}并且你有一个合适的PATH行。通常推荐的是:

#!

因为它将在您的路径中搜索#!/usr/bin/env tclsh8.5 可执行文件,而不是对其进行硬编码。

答案 2 :(得分:0)

来自man tclsh。我想第二个块可以回答你的问题。

  

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

     

更好的方法是使用以下三行启动脚本文件:

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

与前一段[...]

中的方法相比,这种方法有三个优点      

您应该注意,通常的做法是安装tclsh及其版本号作为名称的一部分。这样做的好处是允许多个    Tcl的版本同时存在于同一系统中,但也有一个缺点,即编写在不同版本的Tcl中统一启动的脚本更加困难。