我正在尝试在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的运行文件。
答案 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}"