這周,我們學習了shell腳本基礎,那么什么是shell腳本呢?
shell script是利用shell的功能所寫的一個程序,這個程序是使用純文本文件,將一些shell的語法與指令寫在里面,然后用正則表達式,管道命令以及重定向向等功能,以達到我們所想要的處理目的。Shell腳本可以幫助我們系統、自動化的去管理和處理一些東西
下面是摘抄出的幾個練習:
首先,寫一個能夠創建新腳本的Shell script,如createshXX.sh, 當執行createsh /root/bin/test1.sh 時,則會自動創建并打開/root/bin/test1.sh,且其中包含以下內容:
#!/bin/bash
# ——————————————
# Filename:
# Revision:
# Date:
# Author:
# Email:
# Website:
# Description:
# ——————————————
注:$1 位置變量,指代后面輸入的第一個參數,使用echo和”>” 生成文件并導入模板內容,chmod +x給予文件可執行權限
下面的所有腳本都使用這個腳本創建,基本注釋就可以省略了。
1.編寫腳本/root/bin/sumspace.sh,傳遞兩個文件路徑作為參數給腳本,計算這兩個文件中所有空白行之和
_space=`cat $@ | egrep “^[[:space:]]*$” |wc -l` ; echo $_space
注:這道練習沒有難點,不過上面的解答很有創意,所以收藏了。通過cat同時查看多個文件,然后grep直接匹配兩個文件的所有空白行,這樣就省去了運算過程 ,66的 。
2.編寫腳本/root/bin/argsnumsh,接受一個文件路徑作為參數;如果參數個數小于1,則提示用戶“至少應該給一個參數”,并立即退出;如果參數個數不小于1,則顯示第一個參數所指向的文件中的空白行數
[ “$@” ]&&(cat $1 |grep “^[[:space:]]*$” |wc -l) ||(echo 至少應該給一個文件參數!;exit)
注:$@: 傳遞給腳本的所有參數,每個參數為獨立字符串 ,()將多個命令組合起來作為一組執行。
3.編寫腳本/root/bin/checkdisk.sh,檢查磁盤分區空間和inode使用率,如果超過80%,就發廣播警告空間將滿
A=`df | grep sd|sort -nr -k5|head -1|tr -s ‘ ‘ %|cut -d% -f5`
B=`df -i| grep sd|sort -nr -k5|head -1|tr -s ‘ ‘ %|cut -d% -f5`
[ “$A” -gt “80” ] && wall “空間即將滿”||echo “空間使用率不超過80%”
[ “$B” -gt “80” ] && wall “inode即將滿”||echo “inode使用率不超過80%”
unset A B
注:寫這個腳本的時候,我一直在糾結,因為不知道應該怎么把幾個數字依次與80%對比,原來只需要使用sort和head取最大的使用率和80%對比就行了,尷尬!
4.編寫腳本/bin/per.sh,判斷當前用戶對指定的參數文件,是否不可讀并且不可寫
注:這個腳本一定要注意加入判斷文件是否存在,不然如果文件不存在,也會顯示為文件不可讀且不可寫。
5.編寫腳本/root/bin/excute.sh ,判斷參數文件是否為sh后綴的普通文件,如果是,添加所有人可執行權限,否則提示用戶非腳本文件
注:[ =~ ]測試‘=~’前面的字符串能否被后面的字符串匹配,要注意以’.sh’結尾的表示方法,不知道你會不會錯,反正我錯了好多次。
shell腳本會在我們將來工作中經常使用到,一定要好好練習。
原創文章,作者:mayun,如若轉載,請注明出處:http://www.www58058.com/83707