Linux&&shell基本應用

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章