それには次の 3 つの方法があります。
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]
または、Tcl 構文よりもシェル構文を好む場合は、次のようにします。
set command "java -jar diffkit-0.9.0/diffkit-app.jar -planfiles plan.xml"
exec /bin/sh -c $command
この最後のものは、複雑なリダイレクトを行う必要がある場合に非常に便利です。これらは現在、Tcl よりも Bourne シェル (およびその派生シェル) で行う方が簡単です。ただし、(おそらく) Windows では動作しません。残念ながら、ものを発射するのと同じCMD.EXE
ことは少し恐ろしいことです。