No glob expansion without -re option in Expect

2019-08-13 00:52发布

问题:

#!/usr/bin/expect

spawn passwd [lindex $argv 0]
set password [lindex $argv 1]

expect -nocase "pass*" {
      send "$password\r"
}

expect -nocase "password" {
      send "$password\r"
}

expect eof

How can I prevent expect to expand the glob * in pass*? This is just an example. In my actual code, I want to keep the glob, but I don't want to at -ex, which stands for exact match, or -re option for regex.

回答1:

If you want a glob-style match, use the -gl option before it:

expect {
    -gl -nocase "pass*" {
        # Do something...
    }
}


回答2:

As you wrote to prevent from globing of * use -ex. By default -gl is assumed. Or use -re and escape * as: \\*.



标签: tcl expect