shell如何使用spawn的返回值
时间: 2023-08-29 21:08:38 浏览: 54
在使用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变量中,并在后续的操作中使用。
相关问题
如何安装shell命令spawn
`spawn` 是一个 Tcl 的命令,用于创建一个子进程并执行指定的命令。它不需要安装,因为它是 Tcl 的内置命令,只要你安装了 Tcl,就可以使用 `spawn` 命令。
如果你想在 Shell 中使用 `spawn` 命令,你需要在 Shell 中使用 Tcl 的解释器,比如 tclsh 或者 wish。你可以在终端中输入以下命令来安装 Tcl:
```
sudo apt-get install tcl
```
然后你就可以在终端中输入以下命令来打开 Tcl 解释器:
```
tclsh
```
或者
```
wish
```
这样你就可以在 Tcl 解释器中使用 `spawn` 命令了。
gevent.spawn 获取返回值
gevent.spawn 函数是异步调用的,不会立即获得返回值。如果需要等待协程执行完毕并返回结果,可以使用 gevent.spawn().get() 方法,该方法会阻塞当前协程,直到被调用协程执行完毕并返回结果。例如:
```python
import gevent
def my_func():
return 'Hello, world!'
# 创建并执行协程
task = gevent.spawn(my_func)
# 阻塞当前协程,等待协程执行完毕并返回结果
result = task.get()
print(result)
```
以上代码会输出 "Hello, world!",即协程执行的结果。