expect 脚本获取上个命令结果
时间: 2024-05-30 12:16:07 浏览: 47
可以使用$?或者变量来获取上个命令的结果。
1. 使用$?获取上个命令的结果:
$ ls /tmp
file1 file2
$ echo $?
0
上面的例子中,ls /tmp命令返回了成功的结果,$?的值为0,表示上一个命令执行成功。
2. 使用变量获取上个命令的结果:
$ result=$(ls /tmp)
$ echo $result
file1 file2
上面的例子中,$(ls /tmp)执行了ls /tmp命令,并将结果保存到变量result中,然后使用echo命令输出result变量的值。
相关问题
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表示成功,非零值表示失败。
expect 脚本使用$?
在 expect 脚本中,$? 是一个特殊变量,它用于获取上一个命令的退出状态码。在 shell 脚本中,$? 用于获取上一个命令的退出状态码,而在 expect 脚本中,$? 用于获取最后一个 spawn 命令的退出状态码。因为 expect 脚本中的大部分命令都是通过 spawn 启动的子进程,所以 $? 变量通常用于检查子进程的退出状态码,以判断子进程是否成功执行了所需的任务。例如:
spawn ssh user@host
expect "password:"
send "mypassword\r"
expect eof
if {$? == 0} {
puts "Success"
} else {
puts "Failed"
}
在上面的示例中,$? 用于检查 ssh 命令的退出状态码,如果该命令成功执行,则 $? 的值为 0,向控制台输出 "Success",否则输出 "Failed"。
阅读全文