前提條件: 安裝了expect (mac: brew install expect)
當我們在終端啓動mysql服務,或者其他一些服務的時候, 如果權限不夠, 需要賦予root權限, 如果頻繁啓動和關閉,都需要輸入密碼, 讓人感覺很煩
建立一個自動啓動服務的腳本,該腳本能實現:
- 無論腳本在哪裏執行, 都能進入腳本所在路徑進行執行, 並且返回當前路徑
- 如果需要輸入root密碼, 自動輸入
直接上腳本startMysql:
#!/usr/bin/expect
#設置密碼的值
set password "295002hzx"
#expect方式: 進入腳本所在的路徑
cd [file dirname $argv0]
#shell方式: 進入腳本所在的路徑
#$currentpath=$(cd "$(dirname "$0")";pwd)
#cd $currentpath
#執行腳本 如果沒有上一步,這裏腳本需要加絕對路徑才能正常執行
spawn sudo ./mysql.server start
#expect對通過spawn執行的shell腳本的返回進行判斷,是否包含Password字符串
expect "Password"
#如果expect監測到了包含的字符串,將輸入send中的內容,\n相當於回車
send "$password\n"
#退出expect返回終端,可以繼續輸入,否則將一直在expect不能退出到終端
interact
另附:
mac下啓動mysql服務的地方:
1.在設置裏面可以直接啓動mysql服務
2.腳本啓動的地方在mysql安裝目錄下的 support-files裏面的mysql.server腳本
例如:/usr/local/mysql-5.7.17-macos10.12-x86_64/support-files
啓動: ./mysql.server start
關閉: ./mysql.server stop