EOF的應用
關於EOF
在shell中通過以下的組合
子解釋器 << -EOF
子命令
子shell
-EOF
實現在主解釋器中調用執行子解釋器的操作。
使用EOF實現解釋器嵌套
#!/bin/bash
expect -v
if [$? -ne 0];then
apt-get -y install expect
fi
echo "test expect over"
mysql_password='yibotong'
/usr/bin/expect << -EOF
set timeout 30
spawn apt-get -y install mysql-server
expect "*password*" {send "$mysql_password\r"}
expect "*password*" {send "$mysql_password\r"}
expect eof
-EOF
echo "install mysql over"
使用EOF實現代碼多行註釋
: << COMMENTBLOCK
被註釋的shell代碼行1
被註釋的shell代碼行2
被註釋的shell代碼行3
COMMENTBLOCK
“:” , 冒號代表 shell中的空語句
參考資料:
https://blog.csdn.net/sprita1/article/details/42676307
https://www.cnblogs.com/thebear/p/7799753.html
https://www.cnblogs.com/liyuanhong/articles/7101666.html
expect的應用
關於expect
指令介紹:
- set 變量名稱 變量值
定義變量名稱和值
- spawn shell命令
指定shell命令,該命令執行時會與用戶發生交互行爲
- expect “字段”
定義被匹配的字段,當捕捉到目標字段時執行send指令
- send “答覆字段\r”
定義答覆字段,當expect指令捕捉到目標字段時,使用答覆字段回覆。
“\r”代表回車(ok、確認)效果
- interact
當執行到interact指令時,脫離自動交互行爲,交由用戶操作控制。
使用expect實現自動交互式安裝
#!/usr/bin/expect
set timeout 30
set mysql_password 123456
spawn apt-get -y install mysql-server
expect "*password*" {send "$mysql_password\r"}
expect "*password*" {send "$mysql_password\r"}
expect eof
參考資料:
https://blog.csdn.net/tshangshi/article/details/52162530
https://blog.51cto.com/14316149/2419456