来自Expect Script的Exec对话框命令

时间:2015-08-27 05:11:34

标签: linux bash dialog exec expect

我测试了TCLSH中的以下一行并且它有效:

dialog --title "Text" --msgbox "Text" 8 60

但是,如果我在带有" exec"的Expect脚本中尝试它,它就会挂起:

exec dialog --title "Text" --msgbox "Text" 8 60

我做了一些研究,似乎没有必要逃避特殊角色,但也许这就是问题?

你们有什么建议让这段代码有效吗?谢谢!

2 个答案:

答案 0 :(得分:3)

默认情况下,交互式tclsh的行为类似于 shell (如Bash),并且它将处理未知命令作为外部可执行文件和auto exec 他们。这就是为什么您可以从dialog内直接运行tclsh的原因。可以通过定义全局 auto_noexec var来关闭此功能。例如:

[bash] # tclsh
% echo hello world
hello world
% set auto_noexec "the value does not matter"
1
% echo hello world
invalid command name "echo"
%

对于exec命令,默认情况下它不会将输出打印到终端。您应该使用>@ stdout或/和2>@ stderr

exec dialog --title Text --msgbox Text 8 60 >@ stdout 2>@ stderr

答案 1 :(得分:1)

尝试一下,如果你将stdout直接发送到终端

,它将按预期工作
exec dialog --title "Text" --msgbox "Text" 8 60 >/dev/tty