我是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
任何人都可以帮我解决这个问题吗?
提前致谢。
答案 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中统一启动的脚本更加困难。