【Linux】【Shell】主控指令碼實現
研究學習 Linux Shell 的系列文章.
這篇文章主要講 Shell 主控指令碼的實現.
1. 內容介紹
在 .../monitor
目錄下有如下4個shell指令碼:
- monoitor_man.sh:控制執行下面三個指令碼.
- system_monitor.sh:獲取系統資訊及執行狀態.
- check_server.sh:ngnix和mysql應用狀態分析.
- check_http_log.sh:應用日誌分析.
Shell 系列研究學習的第8~11這4篇文章分別介紹這4個shell指令碼的實現.
2. 補充知識
2.1 關聯陣列
在第4篇講到declare命令時,提到過-a
選項可以將shell變數宣告為陣列型別,更準確的來說是普通陣列. 而使用-A
選項可以將shell變數宣告為關聯陣列.
-a
普通陣列:只能使用整數作為陣列索引.-A
關聯陣列:可以使用字串作為陣列索引.
$ declare -A songs
$ songs[Bob]=bbb
$ songs[Ann]=xyz
$ echo ${songs[Ann]}
xyz
$ echo ${songs[Bob]}
bbb
$ echo ${songs[*]}
bbb xyz
2.2 `command`的作用
`command`
和$(command)
的作用是一樣的,將命令輸出的內容儲存在shell變數中.
$ ff=`ls`
$ echo $ff
anaconda-ks.cfg
2.3 tput sgr0 的作用
tput 命令將通過 terminfo 資料庫對終端會話進行初始化和操作. 通過使用該命令,可以更改終端功能,如移動或更改游標、更改文字屬性,以及清除終端螢幕的特定區域.
tput sgr0
表示關閉終端的所有屬性. 在《控制 Bash 輸出的格式與顏色》中介紹過使用轉義序列控制字串的顏色和格式. 在轉義序列後面使用\e[0m
取消樣式,避免對後續內容的影響. 在顏色和格式控制中,tput sgr0
與 \e[0m
的作用一致.
2.4 正規表示式匹配
前面文章介紹過正規表示式和條件判斷式. [[ A =~ B ]]
用於判斷正規表示式是否匹配,其中A
是字串,B
是正規表示式. 如果A
匹配B
的模式,則[[ A =~ B ]]
返回0;如果不匹配,返回1.
$ [[ 12345 =~ [0-9] ]] && echo 'match' || echo 'not match'
match
$ [[ abcde =~ [0-9] ]] && echo 'match' || echo 'not match'
not match
3. 主控指令碼內容
#!/bin/bash
resettem=$(tput sgr0)
declare -A ssharray
i=0
numbers=""
for script_file in `ls -I "monitor_man.sh" ./`
do
echo -e '\e[0;1;35m'"The Script:" ${i} '==>' ${resettem} ${script_file}
grep -E "^\#Program function" ${script_file}
ssharray[$i]=${script_file}
numbers="${numbers} | ${i}"
i=$((i+1))
done
while true
do
read -p "Please input one number in [ ${numbers} ]:" execshell
if [[ ! ${execshell} =~ ^[0-9]+ ]]; then
exit 0
fi
/bin/sh ./${ssharray[$execshell]}
done
$ touch check_http_log.sh check_server.sh system_monitor.sh
$ bash monitor_man.sh
相關文章
- shell指令碼實現DNS正向解析指令碼DNS
- Linux Shell指令碼Linux指令碼
- Linux shell 指令碼Linux指令碼
- Linux Shell 指令碼實現 tcp/upd 協議通訊Linux指令碼TCP協議
- Linux Crontab Shell指令碼實現秒級定時任務Linux指令碼
- shell 指令碼實現的守護程式指令碼
- Linux shell 指令碼分享Linux指令碼
- 自動批次實現linux機器ssh免密shell指令碼Linux指令碼
- shell指令碼實現---Zabbix5.0快速部署指令碼
- linux shell小指令碼分享Linux指令碼
- linux常用的shell指令碼Linux指令碼
- linux透過shell指令碼實現ssh互動式自動化Linux指令碼
- Linux使用Shell指令碼實現ftp的自動上傳下載Linux指令碼FTP
- 使用Python指令碼在Linux下實現部分Bash Shell的教程Python指令碼Linux
- shell指令碼實現linux下自動安裝Oracle10g薦指令碼LinuxOracle
- Shell指令碼最佳實踐指令碼
- Linux/Unix shell 指令碼中呼叫SQL,RMAN指令碼Linux指令碼SQL
- shell指令碼和python指令碼實現批量ping IP測試指令碼Python
- 使用shell指令碼實現LANMP一鍵安裝指令碼
- 利用shell指令碼實現計劃任務功能指令碼
- shell指令碼實現自動生成awr報告指令碼
- Linux基礎五(shell指令碼)Linux指令碼
- Linux 【Shell指令碼經典案例】Linux指令碼
- linux shell 指令碼攻略筆記Linux指令碼筆記
- Linux Shell指令碼系列之二Linux指令碼
- Linux Shell指令碼系列之一Linux指令碼
- Linux Shell 指令碼面試 25 問Linux指令碼面試
- Linux Shell指令碼面試25問Linux指令碼面試
- linux shell指令碼中 =~ 的作用Linux指令碼
- [shell]shell指令碼實現每天自動抽取資料插入hive表指令碼Hive
- 9個實用shell指令碼指令碼
- Shell指令碼實現生成SSL自簽署證書指令碼
- SHELL指令碼實現Oracle自啟動與關閉指令碼Oracle
- Linux shell:執行shell指令碼的幾種方式Linux指令碼
- Linux Shell程式設計(3)——執行shell指令碼Linux程式設計指令碼
- shell指令碼指令碼
- Linux shell 指令碼基礎介紹Linux指令碼
- Linux命令和shell指令碼學習Linux指令碼