shell中有时我们需要交互,但是呢我们又不想每次从stdin输入,想让其自动化,这时我们就要使shell交互输入自动化了。
1 利用重定向
重定向的方法应该是最简单的
例:
以下 test.sh 脚本内容如下,要求我们从stdin中分别输入 number name 然后将输入的 number name 打印出来
[root@localhost ~]# cat test.sh #! /bin/bash read -p "enter number:" number read -p "enter name:" name echo you have entered $number, $name
以下是作为输入的文件内容:
[root@localhost ~]# cat input.data 001 balabala
然后我们利用重定向来完成交互的自动化:
[root@localhost ~]# ./test.sh < input.data you have entered 001,balabala
2 利用管道完成交互的自动化
这个就是利用管道特点,让前个命令的输出作为后个命令的输入完成的
也用上面例子举例:
[root@localhost test]# echo -e "001\balalbala\n" | sh test.sh you have entered 001, balabala
上面中的 "001\balabala\n" 中的“\n”是换行符的意思。
3 利用expect
expect是专门用来交互自动化的工具,但它有可能不是随系统就安装好的,有时需要自己手工安装该命令
查看是否已经安装:rpm -qa | grep expect
安装命令:yum install expect 或者 apt install expect
关于 expect 相关的知识可直接在本站搜索。