Linux下使用shell脚本执行需要交互的命令

有些命令或者安装程序在执行时是需要有交互的,比如选择安装路径、选择Y/N等等,如果想用shell脚本中执行该命令,而命令又没有提供默认执行/安装参数时,可以先安装expect,然后按照以下的范例编写:

#!/usr/bin/expect
#spawn sh fncbins.run.LINUX.20160927191846.bin
spawn bash -c "sh fncbins*"
#expect "*"
#send " fncb*.bin\n"
expect "请输入操作系统类型(AIX/HPUX/LINUX),直接回车默认(LINUX):"
send "LINUX\n"
expect "请输入数据库类型(ORACLE/DB2/INFORMIX/PGSQL/MYSQL),直接回车默认(ORACLE):"
send "ORACLE\n"
expect "请输入中间件类型(TUXEDO/FNCBTCP/CICS/MQ),直接回车默认(TUXEDO):"
send "TUXEDO\n"
expect "请输入运行环境类型(开发环境/测试环境/生产环境):(DEV/TST/PRO),直接回车默认(DEV):"
send "DEV\n"
expect "开始安装(Y/N),默认(N)"
send "Y\n"
expect "修改对应的环境变量后,请重新登录用户、启动系统、测试使用"
send "\n"
expect eof
exit

请注意expect后要加上期望匹配的回显

标签: linux, shell