从TKGUI运行shell脚本

从TKGUI运行shell脚本,shell,tcl,tk,Shell,Tcl,Tk,我有5个不同的shell脚本,可以从不同的日志文件中提取数据,我用Tcl/Tk编写了一个GUI,将所有脚本整合到一个界面上,还制作了输入条目小部件,为存储日志的shell脚本中使用的变量提供文件夹位置,我没有掌握的一件事是如何将shell脚本与TKGUI命令按钮集成,并在文本小部件中显示输出 任何建议 谢谢如果shell脚本运行速度相当快,最好的方法是使用exec # If the scripts are marked executable set output [exec thescript.

我有5个不同的shell脚本,可以从不同的日志文件中提取数据,我用Tcl/Tk编写了一个GUI,将所有脚本整合到一个界面上,还制作了输入条目小部件,为存储日志的shell脚本中使用的变量提供文件夹位置,我没有掌握的一件事是如何将shell脚本与TKGUI命令按钮集成,并在文本小部件中显示输出

任何建议


谢谢

如果shell脚本运行速度相当快,最好的方法是使用
exec

# If the scripts are marked executable
set output [exec thescript.sh $argumentOne $argumentTwo]
您可以通过将
entry
ttk::entry
小部件绑定到全局变量并使用它来设置参数,也可以使用任意数量的其他机制。(有很多可能性。)输出放在
output
变量中;您可以通过将其插入
文本
小部件来显示它:

set outputwidget [text .t]
# Remember to put this widget in the right place in your GUI!
#    pack $outputwidget

# Put the output in the widget
$outputwidget insert end $output

# Stop the user from editing the contents.
# Note that you need to change the state to normal from code to update it from your script
$outputwidget configure -state readonly
你还可以做很多事情。
exec
还有一些额外的选项,在某些情况下会有所帮助,在向用户显示文本之前可以对文本进行处理,在小部件中标记文本可以做很多事情,比如语法高亮显示,等等。这些事情中有很多都很复杂,你需要把它们作为单独的问题来回答


此外,如果您有长时间运行的脚本,那么您将使用管道(使用
open |…
创建)或(旧但优秀的)Expect包。这些本身也是一个重要的话题。

嗨,多纳尔,非常感谢你的回复,我对Tcl很陌生,正在考虑将我的脚本从bash转换为Tcl,我想在将shell脚本转换为Tcl方面得到一些帮助,我现在真的被卡住了,正在为此工作一段时间。该脚本执行一些非常简单的任务,比如从日志文件中提取某些文本,根据第一列对其进行排序,并以列形式呈现。你能帮忙吗?嗨,多纳尔,非常感谢你的回复,我对Tcl很陌生,正在考虑将我的脚本从bash转换为Tcl,我想在将shell脚本转换为Tcl方面得到一些帮助,我现在真的被卡住了,正在做一段时间。该脚本执行一些非常简单的任务,比如从日志文件中提取某些文本,根据第一列对其进行排序,并以列形式呈现。你能帮忙吗?请看显示日志的问题。
set outputwidget [text .t]
# Remember to put this widget in the right place in your GUI!
#    pack $outputwidget

# Put the output in the widget
$outputwidget insert end $output

# Stop the user from editing the contents.
# Note that you need to change the state to normal from code to update it from your script
$outputwidget configure -state readonly