【问题标题】:How to run a TCL script from shell script?如何从 shell 脚本运行 TCL 脚本?
【发布时间】:2017-02-09 17:39:16
【问题描述】:

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

谁能帮我解决这个问题?

提前致谢。

【问题讨论】:

    标签: shell tcl


    【解决方案1】:

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

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

    【讨论】:

    • 感谢您的解决方案:)
    【解决方案2】:

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

    tclsh my_script.tcl
    

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

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

    #!/usr/bin/env tclsh8.5
    

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

    【讨论】:

    • 感谢您的意见 Donal :)
    【解决方案3】:

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

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-05
      • 1970-01-01
      • 1970-01-01
      • 2017-10-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多