第三階段基礎(chǔ)
時(shí) ?間:2023年7月7日
參加人:全班人員
內(nèi) ?容:
shell實(shí)例
目錄
shell腳本應(yīng)用:
一、shell腳本
二、環(huán)境變量的基本使用
三、條件測(cè)試
shell腳本應(yīng)用:
一、shell腳本
1、shell腳本的作用shell解釋器的作用
1)shell腳本的作用
自動(dòng)化運(yùn)維使用
批量化重復(fù)操作使用腳本代替
2)shell解釋器的作用
Linux系統(tǒng)默認(rèn)使用的bash命令解釋器
負(fù)責(zé)接收用戶輸入的命令提交CPU判斷執(zhí)行
2、腳本的基本結(jié)構(gòu)和執(zhí)行長見的方式
1)腳本的結(jié)構(gòu)
vim test.sh |
腳本后綴文件*.sh |
#!/bin/bash |
聲明 |
#E-mail:821409986@qq.com |
腳本的描述和寫腳本的聯(lián)系方式 |
腳本執(zhí)行的命令 |
2)運(yùn)行腳本的方式
sh test.sh |
使用sh命令運(yùn)行 |
./test.sh |
在當(dāng)前位置運(yùn)行腳本 |
source ./test.sh |
source命令運(yùn)行腳本 |
3、管道符和重定型基本輸入輸出
1)基本的輸入輸出
標(biāo)準(zhǔn)的輸入:接收或者讀取用戶輸入的數(shù)據(jù)<
標(biāo)準(zhǔn)的輸出:將數(shù)據(jù)顯示在屏幕或者文件中>,追加>>
錯(cuò)誤輸出:錯(cuò)誤輸出可以顯示在屏幕或者特定文件中,2>錯(cuò)誤輸出
混合輸出:不管是正確或者錯(cuò)誤都輸出到文件中,&>
2)管道符|
把前一個(gè)命令執(zhí)行的結(jié)果,變成后一個(gè)命令處理的對(duì)象
二、環(huán)境變量的基本使用
1、變量的類型
1)自定義變量
管理員手動(dòng)創(chuàng)建,根據(jù)需要自己定義
2)環(huán)境變量
維護(hù)系統(tǒng)使用
不需要管理員創(chuàng)建系統(tǒng)自動(dòng)創(chuàng)建
3)位置變量
命令行給腳本傳遞程序參數(shù)使用
4)預(yù)定義變量
bash預(yù)定義好的特殊變量
用戶不能修改
2、配置自定義變量
1)創(chuàng)建變量,變量名字是a變量值為1000,b為2000
a=1000 ???b=2000
2)查看變量值兩種方法
echo $a????expr $a
3、變量常見賦值的符號(hào)
1)雙引號(hào),允許通過$符號(hào)引用其他變量值
test="$ab $bb"
echo $test
2)單引號(hào),禁止引其他變量值
[root@huyang1 ~]# test='$ab $bb'
[root@huyang1 ~]# echo $test
$ab $bb
3)反撇,命令替換提取命令執(zhí)行的結(jié)果
[root@huyang1 ~]# aa=`netstat -anptu | grep 22`
[root@huyang1 ~]# echo $aa
4)read將輸入的內(nèi)容賦值給特定的變量名
[root@huyang1 ~]# read -p "請(qǐng)輸入特定的目錄:" insert
請(qǐng)輸入特定的目錄:/adcefg
[root@huyang1 ~]# echo $insert
/adcefg
5)定義全局環(huán)境變量子shell可以應(yīng)用
[root@huyang1 ~]# export a=100
[root@huyang1 ~]# echo $a
4、整數(shù)變量運(yùn)算符
1)創(chuàng)建的運(yùn)算符
+:加法???-:減法???\*:乘法
/:除法???%:求模(余)運(yùn)算
2)運(yùn)算基本的應(yīng)用
[root@huyang1 ~]# a=100
[root@huyang1 ~]# b=200
[root@huyang1 ~]# expr $a + $b
300
[root@huyang1 ~]#expr 1 + 1
[root@huyang1 ~]#echo ?$[1+1]
[root@huyang1 ~]#echo “scale=2;1.25*1.25”|bc
free
vim mom.sh
#!/bin/bash
mt=$(free | awk ‘NR==2{print $2}’)
mu=$(free | awk ‘NR==2{print $3}’)
muu=$(expr $mu \* 100 / $mt)
echo $muu
或者
echo "scale=2; $mu/$mt*100" |bc
? ? ? ? ? ? ? ? free ?| ?awk ?'NR==2{print ?int($3/$2*100)"%"}'
3)花括號(hào)的用于區(qū)分符號(hào)
[root@huyang1 ~]# echo ${ab}0.10.1
benet0.10.1
5、特殊變量
1)環(huán)境變量
系統(tǒng)創(chuàng)建
2)位置變量
提供9個(gè)位置$n(n代表1--9)??九列
3)預(yù)定義變量
$#:命令行中位置參數(shù)
$*:所有位置參數(shù)
$?:記錄的腳本執(zhí)行狀態(tài)0表示成功,非0表示錯(cuò)誤
$0:執(zhí)行腳本的進(jìn)程程序名字
[root@huyang1?~]# vim bak.sh
#!/bin/bash
mkdir /backup
tar zcf /backup/file_all-$(date +%F).tar.gz $* &>/dev/null
echo "共備份了$#個(gè)文件"
echo "成功執(zhí)行了$0腳本"
echo "備份的文件為:$*"
以下是一個(gè)實(shí)例腳本:
掛載光盤
#!/bin/bash
#用戶自動(dòng)構(gòu)建yum倉庫腳本
#掛載光盤
mount /dev/sr0?/mnt
#創(chuàng)建倉庫文件
cd ?/etc/yum.repos.d/
mkdir bak
mv *.repo bak
#創(chuàng)建yum文件
echo “[yum]
name=yum
baseurl=file:///mnt
enabled=1
gpgcheck=0” > local.repo
# ?清除重建緩存
?yum clean all && yum makecache fast
測(cè) 試:
掛載光盤提示信息重定向到黑洞
#!/bin/bash
#用戶自動(dòng)構(gòu)建yum倉庫腳本
echo ?“掛載光盤…..”
mount /dev/sr0?/mnt ?&> /dev/null
echo “創(chuàng)建倉庫文件…..”
cd ?/etc/yum.repos.d/
mkdir bak
mv *.repo bak
#創(chuàng)建yun文件
echo “[yum]
name=yum
baseurl=file:///mnt
enabled=1
gpgcheck=0” > local.repo
echo ?“清除重建緩存…..”
?yum clean all ???&> /dev/null ?&& yum makecache fast ??&> /dev/null
echo ?“yum創(chuàng)建成功….”
測(cè) 試:
批量處理統(tǒng)一文件內(nèi)容---非交互
vim??pass.txt
123456
useradd user1
passwd ?--stdin ?user1 < pass.txt
或者
echo ?“123456” | passwd ?--stdin ?user1
cd ?/boot | ls –l
cd ?/boot ; ?ls –l
強(qiáng)制接收
cat first.sh
awk ?‘{print ?$2}’first.sh
awk ‘?{print $2}’first.sh
awk ?‘{print $2,$1,$3}’first.sh
df
df ?|grep ?“/$”| awk ‘{print ?$5}’
df ?|grep ?“/$”| awk ‘{print ?$5}’| awk –F ‘%’ ‘{print $1}’
#x=18
#expr ?3 + $x
變量輸出
name=zhangsan
echo $name
echo ${name}
echo $namenihao
echo ${name}nihao
read ?-p “請(qǐng)輸入你的名字:” name
echo ?$name
變量,掛載光盤測(cè)試
#!/bin/bash
#用戶自動(dòng)構(gòu)建yum倉庫腳本
read ?-p “輸入你的掛載點(diǎn)位置:” x
echo ?“掛載光盤…..”
mkdir $x
mount /dev/sr0??$x &> /dev/null
echo “創(chuàng)建倉庫文件…..”
cd ?/etc/yum.repos.d/
mkdir bak
mv *.repo bak
#創(chuàng)建yun文件
echo “[yum]
name=yum
baseurl=file://$x
enabled=1
gpgcheck=0” > local.repo
echo ?“清除重建緩存…..”
?yum clean all ???&> /dev/null ?&& yum makecache fast ??&> /dev/null
echo ?“yum創(chuàng)建成功….”
測(cè) 試:
交互界面
?#!/bin/bash
echo “huyang1….
kernel….”
read –p “l(fā)ocalhost login:”user
if [ ?$user ??= “root”]
then
echo “歡迎登陸”
else
???????echo “拜拜”
fi
測(cè) 試:
三、條件測(cè)試
1、test判斷
1)判斷結(jié)果類型
真/假
2)判斷語法
test -d /boot && echo "YES" |
測(cè)試boot是目錄顯示YES |
[ -d /boot ] && echo "yes" |
測(cè)試boot是目錄顯示YES |
3)常見的測(cè)試選項(xiàng)
-d測(cè)試目錄
-f測(cè)試文件
-w測(cè)試寫權(quán)限
-r測(cè)試讀權(quán)限
-x測(cè)試執(zhí)行權(quán)限
-e測(cè)試文件目錄是否存在
[root@huyang1?~]# vim cd.sh
#!/bin/bash
[ -d /cd ] || mkdir /cd
[ -d /cd/Packages ] || mount /dev/cdrom /cd &> /dev/null
2、比較運(yùn)算符
1)常見的比較運(yùn)算符
gt大于?????????lt小于
ge大于等于?????le小于等于
eq等于?????????ne不等于
[root@huyang1?~]# vim num.sh
#!/bin/bash
read -p "請(qǐng)輸入一個(gè)數(shù)字:" num
[ $(expr $num % 2) -eq 0 ] && echo "$num 是偶數(shù)" || echo "$num 是基數(shù)"
測(cè) 試:
2)比較運(yùn)算符的基本使用
[ 10 -gt 5 ] && echo "YES" |
10大于5顯示為yes |
abc=`history | wc -l` [ $abc -gt 100 ] && echo "yes" |
提取history命令行數(shù),和100比較大于100顯示yes |
3、字符串比較
1)字符串比較運(yùn)算符
=:字符串內(nèi)容是否相同
!=:字符串內(nèi)容是否不同
-z:檢查字符串是否為空
2)字符串比較的應(yīng)用,字符串需要使用雙引號(hào)
[ "aaa" = "aaa" ] && echo "yes" |
判斷aaa字符全是否等于aaa字符 |
[ $LANG != "en.US" ] && ?echo "不支持中文!!" |
LANG變量不等于en.US顯示不支持中文 |
4、邏輯測(cè)試
邏輯測(cè)試的常見運(yùn)算符
&&:而且或者用-a表示,兩個(gè)結(jié)果為真顯示
||:或,或者使用-o表示,兩個(gè)判斷結(jié)果只需要滿足一個(gè)條件顯示為真
!:否,兩個(gè)判斷結(jié)果不成立為真
#!/bin/bash
read -p "輸入考試成績:" num
[ $num -ge 60 -a $num -le 100 ] && echo "考試及格" ?
或者
[ $num -ge 0?] && [ $num -le 59?] && echo "考試不及格"
測(cè)試:
文章來源:http://www.zghlxwxcb.cn/news/detail-544301.html
?文章來源地址http://www.zghlxwxcb.cn/news/detail-544301.html
到了這里,關(guān)于從小白到大神之路之學(xué)習(xí)運(yùn)維第55天--------shell腳本實(shí)例應(yīng)用的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!