在Tcl脚本中实现多个Bash脚本

时间:2015-01-28 15:30:40

标签: bash tcl

我想在我的“main”tcl程序中植入多个Bash脚本 - 所以没有外部的.sh脚本 - 我想把它放在一个地方。我已经找到了如何将一个脚本植入tcl:

set printScript { echo $HOME }

proc printProc {printScript} {
    puts [exec /bin/bash << $printScript]
}

printProc $printScript

我现在的问题是: 如何使用此概念来实现调用其他脚本的脚本,而无需将调用脚本硬编码到调用脚本中? 假设我有这样的事情:

script1.sh

script2="$PWD/script2.sh"
#do some stuff
if [something]
then
    $script2
fi
#do some more stuff

上述概念可以用来解决我的问题吗?怎么办呢?

1 个答案:

答案 0 :(得分:0)

每个脚本都是一个字符串,所以,是的,您可以使用字符串操作来构建脚本原语中的脚本。这不是最好的解决方案,但它是可能的。如果您选择通过字符串操作构建脚本,则string map替换可能比通过变量替换更好。以下内容:

 set script1 {
      #do some stuff
      if [something]
      then
          %X
      fi
      #do some more stuff
 }
 set maplist {%% %}
 lappend maplist %X {$PWD/script2.sh}
 set executable_script [string map $maplist $script1]

其他解决方案包括

  1. 在Tcl中编写所有内容
  2. 如果可能的话,用bash脚本编写所有内容
  3. 使用函数编写主bash脚本并从Tcl
  4. 调用这些函数