将值从TK传递到文件并替换变量

时间:2014-07-29 22:04:18

标签: sed tk

我正在尝试在tk和cshell-script之间进行接口。 我可以使用tk收集数据:

label .firstColumn.s.variable.label -text "myFirstVariable" -background $color3
entry .firstColumn.s.variable.entry -textvariable program

但是当我尝试运行命令时它不起作用

button .secondColumn.o.buttons.go -text "Run Now" \
    -command "exec sed -i {s/ABC/$myFirstVariable/g} runme.sh \
    >! runmeNow.sh ; ./runmeNow"

ABC文件中将runmeNow.sh更改为空白。

有没有更好的方法来实现它? 我想替换cshell-script(runme.sh)中预定义的占位符。我的占位符是ABC。然后我想将它管道到另一个文件,然后运行此文件。 runme.sh具有基于UNIX的运行文件。

1 个答案:

答案 0 :(得分:1)

在我看来,tk正在将$myFirstVariable解释为自己的变量,而您希望将其转发到shell。使用反斜杠转义美元符号可能还不够:exec是一个Tcl命令并且不使用shell,因此我们可能必须调用一个来扩展shell变量:

button .secondColumn.o.buttons.go -text "Run Now" \
    -command "exec /bin/sh -i {sed "s/ABC/$myFirstVariable/g" runme.sh \
    > runmeNow.sh ; ./runmeNow.sh}"