带有示例的 Linux 中的 expect 命令
期望命令或脚本语言适用于期望用户输入的脚本。它通过提供输入来自动化任务。
// We can install expect command using following if not installed
// On Ubuntu
$sudo apt install expect
// On Redhat based systems
$ yum install 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,您将看到您提供的相同答案。