1躲雅、什么是shell腳本
shell script是放在文本文件中的一串shell和操作系統(tǒng)命令喊巍,讓使用者很容易地就能夠一個操作執(zhí)行多個命令屠缭,并可以重復(fù)使用。
2崭参、如何創(chuàng)建shell腳本
-
第一步:創(chuàng)建一個文本呵曹,最好以
.sh
為后綴,方便區(qū)分其他普通文本何暮。- shell腳本第一行需要指定使用的shell奄喂,我們稱之為shebang機制,其格式為
#!/bin/bash
- 在聲明使用的shell后海洼,還可以用#添加shell腳本的注釋跨新,注釋內(nèi)容不會被執(zhí)行,目的是方便使用者理解腳本
如:
#!/bin/bash
#Author:Luo
#date:2017-06-08
#version:2.0
#該腳本用于計算/etc/passwd文件中的第n個用戶和第m用戶的ID之和
添加完注釋后坏逢,就可以在文件的每一行中輸入命令域帐,然后加一個回車符。shell編程是屬于過程式是整、解釋執(zhí)行語言肖揣。因此,按照你的思路按順序?qū)懮夏_本要執(zhí)行的命令即可贰盗。
-
第二步:運行腳本
相信到這里你的腳本已經(jīng)寫完了许饿,那么接下來要做的就是,運行腳本了舵盈,過程如下:- 給腳本文件添加執(zhí)行權(quán)限
- 運行腳本陋率,三種方法:
- 將shell腳本文件所處的目錄添加到PATH環(huán)境變量中
- 在命令行提示符中用絕對或相對文件路徑來引用shell腳本文件。
- 在命令行命令行中直接用bash 調(diào)用腳本
3秽晚、腳本例子
#!/bin/bash
#Author:Luo
#date:2017-06-06
#version:2.0
#計算/etc/passwd文件中的第n個用戶和第m用戶的ID之和
[ $# -ne 2 ]&&echo "usage:idsum.sh arg1 arg2"&&exit [2]
ID1=`getent passwd|head -n $1|tail -n 1|cut -d: -f3`
ID2=`getent passwd|head -n $2|tail -n 1|cut -d: -f3`
echo ID1=$ID1
echo ID2=$ID2
sum=$[ID1+ID2]
echo sum=$sum
exit
#!/bin/bash
#Author:Luo
#date:2017-06-06
#version:2.1
#傳遞兩個文件路徑作為參數(shù)給腳本瓦糟,計算這兩個文件中所有空白行之和
Space1=`grep ^[[:space:]]*$ $1|uniq -c`
Space2=`grep ^[[:space:]]*$ $2|uniq -c`
echo Space1=$Space1
echo Soace2=$Space2
Spacesum=$[Space1+Space2]
echo Spacesum=$Spacesum
#!/bin/bash
#Author:Luo
#date:2017-06-06
#version:2.
#統(tǒng)計/etc, /var, /usr目錄中共有多少個一級子目錄和文件
[ $# -ne 3 ] && echo "usage:idsum.sh file1 file2 file3" && exit [2]
dir1=`ls -l $1|grep -v total |wc -l`
dir2=`ls -l $2|grep -v total |wc -l`
dir3=`ls -l $3|grep -v total |wc -l`
echo num=$dir1
echo num=$dir2
echo num=$dir3
sum=$[dir1+dir2+dir3-3]
echo sum=$sum
#!/bin/bash
#Author:Luo
#date:2017-06-06
#version:2.0
#接受一個文件路徑作為參數(shù);如果參數(shù)個數(shù)小于1赴蝇,則提示用戶“至少應(yīng)該給一個參數(shù)”菩浙,并立即退出;
#如果參數(shù)個數(shù)不小于1句伶,則顯示第一個參數(shù)所指向的文件中的空白行數(shù)
[ "$#" -lt 1 ]&&echo "至少應(yīng)該給一個參數(shù)"&&exit
grep "^[[:space:]]*$" $1|wc -l
exit
#!/bin/bash
#Author:Luo
#date:2017-06-06
#version:2.0
#接受一個主機的IPv4地址做為參數(shù)劲蜻,測試是否可連通。如果能ping通考余,則提示用戶“該IP地址可訪問”先嬉;如果不可ping通,則提示用戶“該IP地址不可訪問
[ "$#" -ne 1 ]&&echo "請輸入一個ip地址"&&exit
ping -c 1 $1 &> /dev/null && echo "該ip地址可以訪問"||echo "該ip地址不可訪問"
exit
#!/bin/bash
#Author:Luo
#date:2017-06-06
#version:2.0
#檢查磁盤分區(qū)空間和inode使用率楚堤,如果超過80%疫蔓,就發(fā)廣播警告空間將滿
i=`df|grep "^/dev/sda"|tr -s " " :|cut -d":" -f5|sort -nr|wc -l`
[ $i -ge 1 ] && usage=`df|grep "^/dev/sda"|tr -s " " :|cut -d":" -f5|cut -d "%" -f1 |sort -n|tail -n 1`
[ $usage -lt 80 ] &&echo "磁盤空間最高使用率:$usage% 正常"||echo "磁盤空間將滿"
[ $i -ge 1 ] && iusage=`df -i |grep "^/dev/sda"|tr -s " " :|cut -d":" -f5|cut -d "%" -f1 |sort -n|tail -n 1`
[ $usage -lt 80 ] &&echo "inode最高使用率:$iusage% 正常"||echo "inode將滿"