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

如何从shell脚本运行TCL脚本?,shell,tcl,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 有人能帮我解决这个问题吗 提前感谢。如果在您

我不熟悉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
有人能帮我解决这个问题吗


提前感谢。

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

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

如果尚未使脚本可执行(使用
chmod+x
),则需要使用:

tclsh my_script.tcl
或者可能是
tclsh8.5/path/to/script.tcl
或其许多变体

如果已使脚本可执行,请检查包含脚本的目录是否位于
路径上(如果不在,请使用脚本的完整文件名或调整
路径),以及是否有合适的
#行。通常的建议是:

#!/usr/bin/env tclsh8.5

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

来自
man tclsh
。我想第二个街区回答了你的问题

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

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

 #!/bin/sh
 # the next line restarts using tclsh \
 exec tclsh "$0" ${1+"$@"}
与上一段中的方法相比,这种方法有三个优点[……]

您应该注意到,安装tclsh时,通常会将其版本号作为名称的一部分。这具有允许多个 Tcl版本可以同时存在于同一个系统上,但缺点是编写跨不同版本的Tcl统一启动的脚本比较困难


感谢您的解决方案:)感谢您的投入Donal:)