【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
相關文章
- Linux Shell指令碼Linux指令碼
- Linux Crontab Shell指令碼實現秒級定時任務Linux指令碼
- shell指令碼實現DNS正向解析指令碼DNS
- linux常用的shell指令碼Linux指令碼
- 自動批次實現linux機器ssh免密shell指令碼Linux指令碼
- linux透過shell指令碼實現ssh互動式自動化Linux指令碼
- linux shell指令碼中 =~ 的作用Linux指令碼
- Linux 【Shell指令碼經典案例】Linux指令碼
- Linux基礎五(shell指令碼)Linux指令碼
- shell指令碼實現---Zabbix5.0快速部署指令碼
- Shell指令碼最佳實踐指令碼
- Linux shell:執行shell指令碼的幾種方式Linux指令碼
- Linux shell 指令碼基礎介紹Linux指令碼
- Linux 使用 shell 指令碼處理字串Linux指令碼字串
- Linux Shell指令碼時間排程Linux指令碼
- Linux命令和shell指令碼學習Linux指令碼
- 什麼是Shell指令碼?Shell指令碼在Linux運維工作中的地位!指令碼Linux運維
- [shell]shell指令碼實現每天自動抽取資料插入hive表指令碼Hive
- 9個實用shell指令碼指令碼
- 【學習】Linux Shell指令碼程式設計Linux指令碼程式設計
- shell指令碼linux命令連續執行指令碼Linux
- Linux學習之路(三)Shell指令碼初探Linux指令碼
- shell指令碼指令碼
- Shell指令碼實現生成SSL自簽署證書指令碼
- 什麼是shell指令碼?Linux為什麼學習shell?指令碼Linux
- MySQL的一些功能實用的Linux shell指令碼分享MySqlLinux指令碼
- Bash 指令碼實現每次登入到 Shell 時可以檢視 Linux 系統資訊指令碼Linux
- linux學習day4——shell指令碼中Linux指令碼
- linux學習day3——shell指令碼上Linux指令碼
- linux shell 指令碼語言教程(超詳細!)Linux指令碼
- Linux必須掌握的shell指令碼基礎Linux指令碼
- Linux Shell指令碼程式設計-基礎1Linux指令碼程式設計
- 幾例實用的Shell指令碼指令碼
- 能用js實現的最終用js實現,Shell指令碼也不例外JS指令碼
- 常用shell指令碼指令碼
- shell指令碼案例指令碼
- shell指令碼(6)-shell陣列指令碼陣列
- 【Linux】什麼是shell指令碼?shell變數分為哪幾類?Linux指令碼變數