期望脚本中的通配符不起作用

use*_*997 4 testing expect

我有以下脚本成功运行。但是,如果我尝试使用通配符复制多个文件,则会引发错误,说“没有这样的文件或目录”。

此代码有效:

#!/usr/bin/expect -f
spawn scp file1.txt root@192.168.1.156:/temp1/.
expect "password:"
send "iamroot\r"
expect "*\r"
expect "\r"
Run Code Online (Sandbox Code Playgroud)

以下不起作用:

#!/usr/bin/expect -f
spawn scp * root@192.168.1.156:/temp/. #fails here
….
Run Code Online (Sandbox Code Playgroud)

ctr*_*lor 6

*通常由外壳(bash)的扩展,但在这种情况下,你shell是expect。我怀疑这expect不是扩展*.

尝试:

spawn bash -c 'scp * root@192.168.1.156:/temp/.'
Run Code Online (Sandbox Code Playgroud)

解释:

#!/usr/bin/expect -f
spawn echo *
expect "*"

spawn bash -c 'echo *'
expect "file1 file2…"
Run Code Online (Sandbox Code Playgroud)