bash – 如何在TCL中用exec拆分两个args中的变量?
发布时间:2020-12-16 01:45:27 所属栏目:安全 来源:网络整理
导读:我想在Tcl / Tk中创建一个简单的控制台 我有两个问题.首先用[glob *]更改每个*但是,当我的条目包含“ls -a”时,它不理解ls是命令而且-a是第一个arg. 我怎么能设法做到这一点? 谢谢 proc execute {} { # ajoute le contenu de .add_frame.add_entry set valu
我想在Tcl / Tk中创建一个简单的控制台
我有两个问题.首先用[glob *]更改每个*但是,当我的条目包含“ls -a”时,它不理解ls是命令而且-a是第一个arg. 我怎么能设法做到这一点? 谢谢 proc execute {} { # ajoute le contenu de .add_frame.add_entry set value [.add_frame.add_entry get] if {[string compare "$value" ""] == 1} { .text insert end "nn% $valuen" .text insert end [exec $value] .add_frame.add_entry delete 0 end } } frame .add_frame label .add_frame.add_label -text "Nouvel élément : " entry .add_frame.add_entry button .add_frame.add_button -text "Executer" -command execute button .add_frame.exit_button -text "Quitter" -command exit bind .add_frame.add_entry <Return> execute bind .add_frame.add_entry <KP_Enter> execute bind . <Escape> exit bind . <Control-q> exit pack .add_frame.add_label -side left pack .add_frame.exit_button -side right pack .add_frame.add_button -side right pack .add_frame.add_entry -fill x -expand true pack .add_frame -side top -fill x text .text .text insert end "% Tcl/Tk Console" pack .text -side bottom -fill both -expand true 解决方法
Tcl 8.5中的简单答案是使用:
exec {*}$value 在8.4及之前,该语法不存在.这意味着许多人写道: eval exec $value 但实际上,安全版本就是其中之一: eval exec [lrange $value 0 end] eval [linsert $value 0 exec] 当然,如果$value直接来自用户,那么你最好使用系统shell来评估它,因为更多的用户期望这种语法: exec /usr/bin/bash -c $value (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |