expect返回值给shell_如何获得expect中spawn进程的返回值
时间: 2023-08-07 10:43:29 浏览: 340
在expect脚本中,可以使用`wait`命令等待spawn的进程退出,并获取其返回值。`wait`命令的返回值为spawn进程的退出状态码,可以通过`$?`变量获取。例如:
```
spawn mycommand
expect {
"Password:" {
send "mypassword\r"
exp_continue
}
eof
}
wait
set exit_code $?
puts "The exit code of mycommand is $exit_code"
```
在以上例子中,`wait`命令等待spawn的进程退出,并获取其退出状态码,赋值给`$exit_code`变量。最后通过`puts`命令输出该变量的值。
相关问题
shell脚本expect指令返回值获取
在expect脚本中,可以使用`$?`来获取上一条指令的返回值。比如:
```
#!/usr/bin/expect
spawn ssh user@192.168.1.100
expect "password:"
send "mypassword\r"
expect "$ "
send "ls -l /tmp\r"
expect "$ "
set result $?
puts "The return value is $result"
```
在上面的脚本中,`$?`获取了`ls -l /tmp`命令的返回值,并将其赋给变量`result`。然后使用`puts`命令将返回值输出到屏幕上。注意,`$?`的值是一个整数,通常情况下,0表示成功,非零值表示失败。
shell如何使用spawn的返回值
在使用spawn命令后,可以使用expect命令来等待子进程的输出。expect命令可以根据子进程输出的内容来进行不同的操作,例如发送指定的命令或者退出子进程等。
如果在spawn命令中指定了变量,那么spawn命令会返回这个变量的值。可以使用set命令将这个值保存到一个变量中,然后在后续的操作中使用这个变量。
例如:
```
#!/usr/bin/expect
set timeout 10
set host "127.0.0.1"
set user "root"
set password "123456"
spawn ssh $user@$host
expect {
"yes/no" {
send "yes\r"
exp_continue
}
"password:" {
send "$password\r"
set result $expect_out(buffer)
}
timeout {
puts "timeout"
exit 1
}
eof {
puts "eof"
exit 1
}
}
puts "login success"
puts "result=$result"
```
在这个脚本中,使用spawn命令连接到远程主机,并根据子进程输出的内容发送不同的命令。在输入密码后,将expect_out(buffer)的值保存到result变量中,并在后续的操作中使用。
阅读全文