expect 变量返回到shell
时间: 2023-11-11 21:04:19 浏览: 56
可以使用`echo $expect`命令将expect变量的值返回到shell。例如:
```
#!/usr/bin/expect
set expect "Hello"
puts $expect
exec echo $expect
```
这个脚本会将expect变量的值输出到终端,并且使用exec命令将expect变量的值返回到shell。
相关问题
shell 中expect的用法
expect是一个用于自动化交互的工具,可以在shell脚本中使用。
expect的基本用法是:
1. 安装expect
在Ubuntu中,可以使用以下命令安装expect:
```
sudo apt-get install expect
```
2. 编写expect脚本
expect脚本的基本结构是:
```
#!/usr/bin/expect
spawn [command]
expect {
[pattern1] {action1}
[pattern2] {action2}
...
}
```
其中,spawn命令用于启动被自动化的程序,pattern用于匹配程序输出的信息,action用于执行相应的操作。
例如,以下脚本可以自动登录ssh服务器:
```
#!/usr/bin/expect
set timeout 10
set ip [lindex $argv 0]
set username [lindex $argv 1]
set password [lindex $argv 2]
spawn ssh $username@$ip
expect {
"(yes/no)? " {
send "yes\r"
exp_continue
}
"password: " {
send "$password\r"
}
}
interact
```
在这个脚本中,首先定义了一些变量,然后使用spawn命令启动ssh连接。接着,使用expect匹配了两种不同的输出信息,一种是确认是否连接到新的主机,另一种是输入密码。当匹配到"(yes/no)?"时,发送"yes\r",并继续等待其他匹配;当匹配到"password:"时,发送密码。最后使用interact命令进入交互模式,允许用户手动操作连接。
3. 运行expect脚本
使用以下命令运行expect脚本:
```
expect [script]
```
其中,[script]是expect脚本的文件名。在运行脚本时,可以传入一些参数,例如:
```
expect ssh_login.expect 192.168.1.100 root password
```
这将连接到IP地址为192.168.1.100的服务器,使用root用户名和password密码进行登录。
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表示成功,非零值表示失败。