【问题标题】:Exec dialog command from Expect Script来自 Expect Script 的 Exec 对话框命令
【发布时间】:2015-08-27 05:11:34
【问题描述】:

我在 TCLSH 中测试了下面的行,它可以工作:

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

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

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

我做了一点研究,似乎不需要转义特殊字符,但也许这就是问题所在?

你们有什么建议可以让这段代码工作吗?谢谢!

【问题讨论】:

    标签: linux bash dialog exec expect


    【解决方案1】:

    默认情况下,交互式tclsh 的行为类似于shell(如Bash),它会将未知命令作为外部可执行文件处理并自动exec 它们。这就是为什么您可以直接从tclsh 中运行dialog。这可以通过定义 global 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
    

    【讨论】:

      【解决方案2】:

      实验一下,如果你直接发送标准输出到终端,它会按预期工作

      exec dialog --title "Text" --msgbox "Text" 8 60 >/dev/tty
      

      【讨论】:

        猜你喜欢
        • 2023-02-20
        • 2023-03-23
        • 1970-01-01
        • 2012-09-12
        • 1970-01-01
        • 2021-09-24
        • 1970-01-01
        • 2014-06-17
        • 1970-01-01
        相关资源
        最近更新 更多