【问题标题】:Expect script reading commands from file期望从文件中读取脚本命令
【发布时间】:2014-12-27 14:24:55
【问题描述】:

我正在尝试编写一个从文件中读取命令并执行它们的期望脚本,如this topic 中所述。这是我的脚本script.sh

#!/usr/bin/expect

set f [open "script_cmds.txt"]
set cmds [split [read $f] "\n"]
close $f

foreach cmd $cmds {
    spawn cmd 
}

expect eof
close

位于同一文件夹中的文件script_cmds.txt 如下所示:

mkdir cmdlisttest1
mkdir cmdlisttest2

要在我使用的 cygwin 上编译和运行脚本

chmod +x script.sh
d2u script.sh
./script.sh

我得到的输出读取

spawn cmd
spawn cmd
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

C:\cygwin\home\user>

然后它停在那里而不退出。未创建文件夹 cmdlisttest1cmdlisttest2

我对脚本还很陌生;任何人都可以发现错误吗?

【问题讨论】:

    标签: shell cygwin expect mkdir


    【解决方案1】:

    您正在执行 spawn cmd 而不是 spawn $cmd
    使用$cmd,您正在读取存储在变量cmd 中的值,这就是您想要的。

    【讨论】:

    • 显然这是一个换行问题。当您执行d2u 时,它是否使转换就位?我建议你tr -d '\r' < script.sh > script_unix.sh而不是d2u,然后执行:./script_unix.sh
    • 我仍然不能让它工作;由于问题已经改变,我发布了一个新主题:stackoverflow.com/questions/27677866/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多