有三种方法可以做到:
exec java -jar diffkit-0.9.0/diffkit-app.jar -planfiles plan.xml
没有引号;每个 Tcl 字成为一个单独的参数。
set command "java -jar diffkit-0.9.0/diffkit-app.jar -planfiles plan.xml"
exec {*}$command
# or in 8.4 and before, one of these:
# eval exec $command
# eval [list exec] [lrange $command 0 end]
# eval [linsert $command 0 exec]
或者,如果您更喜欢 shell 语法而不是 Tcl 语法:
set command "java -jar diffkit-0.9.0/diffkit-app.jar -planfiles plan.xml"
exec /bin/sh -c $command
当您需要进行复杂的重定向时,最后一个非常有用;它们目前在 Bourne shell(及其衍生工具)中比在 Tcl 中更容易。它(可能)不会在 Windows 上运行;不幸的是,与发射东西相当的东西CMD.EXE
有点可怕。