📜  带有示例的 Linux 中的 expect 命令

📅  最后修改于: 2022-05-13 01:57:06.148000             🧑  作者: Mango

带有示例的 Linux 中的 expect 命令

期望命令或脚本语言适用于期望用户输入的脚本。它通过提供输入来自动化任务。

首先,我们编写一个需要用户输入的脚本,然后我们将使用 expect 编写另一个脚本来自动执行任务。

#!/bin/bash
 
echo "Enter your name"
 
read $REPLY
 
echo "Enter your age"
 
read $REPLY
 
echo "Enter your salary"
 
read $REPLY

好的,那么让我们写下脚本来回答上述脚本的问题。

#!/usr/bin/expect -f
 
set timeout -1
 
spawn ./que.sh
 
expect "Enter your name\r"
 
send -- "I am Nikhil\r"
 
expect "Enter your age\r"
 
send -- "24\r"
 
expect "Enter your salary\r"
 
send -- "100k\r"
 
expect eof

第一行定义了期望的命令路径 #!/usr/bin/expect 。

在第二行代码中,我们禁用了超时。然后使用 spawn 命令启动我们的脚本。
我们可以使用 spawn 来运行我们想要的任何程序或任何其他交互式脚本。 spawn 命令用于启动脚本或程序,如 shell、FTP、Telnet、SSH、SCP 等。
剩下的几行是与我们的 shell 脚本交互的 Expect 脚本。
最后一行如果文件结束,则表示交互结束。

首先,我们必须使文件可执行,然后运行它。您可以通过键入以下内容来执行此操作:

$ chmod +x ./ans.sh
$ ./ans.sh

这将产生如下输出:
输出:

自动期待

要自动构建期望脚本,您可以使用 autoexpect 命令。autoexpect 的工作方式与期望类似,但它会为您构建自动化脚本。您想要自动化的脚本作为参数传递给 autoexpect,您回答问题,您的答案将保存在文件中。

$ autoexpect ./que.sh  

生成一个名为 script.exp 的文件,其中包含与我们在上面所做的相同的代码,并添加了一些内容。
如果您运行文件 script.exp,您将看到您提供的相同答案。