期望脚本条件中的默认路径

default path in expect script condition

我正在尝试创建一个预期脚本,它将执行除最后一个以外的所有预期条件。

例如:

send -- "command\r"
expect {
        "No such file or directory" {
            
        }
        "Permission Denied" {
            puts "Command Location 1 execution Failed"
        }
        "finished"
    }

send -- "exit\r"
expect eof
exit 0

基本上,如果 expect 脚本检测到“没有这样的文件或目录”或“权限被拒绝”,我希望 'puts "Command Location 1 execution Failed"' 被执行,而不是在这两种情况下都必须重复。但是,如果检测到“完成”,我不想打印任何内容,只是发送退出命令。

我的想法如下:

send -- "command\r"
expect {
        "No such file or directory" {
        }
        "Permission Denied" {
        }
        "*" {
         puts "Command Location 1 execution Failed"
        }
        "finished"
    }

send -- "exit\r"
expect eof
exit 0

要是我能有一个像 !="finished" 这样的条件就好了。

如有任何帮助,我们将不胜感激!

expect 手册建议如果您不想重复相同的操作,请使用带交替的正则表达式。像

send -- "command\r"
expect {
        -re "(?i)No such file or directory|Permission Denied" {
            puts "Command Location 1 execution Failed"
        }
        finished
}
send -- "exit\r"
expect eof
exit 0