數值運算
整數運算【三種,隨便掌握一種即可】
expr 數字 運算符 數字
[root@ceshiji ~]# expr 1 + 1(運算符號都是+ - * / 注:*需要\*。%是取余,余數只有0 1 2)
2
[root@ceshiji ~]# expr 45 \* 1
45
echo$[數字 運算符 數字]
[root@ceshiji ~]# echo $[89*89+454848*874851]
397924235569
let
i++ == i=i+1
i+=2 == i=i+2
i*=2 == i=i*2
i\=2 == i=i\2
i-=3 == i=i-2
[root@ceshiji ~]# a=13
[root@ceshiji ~]# let a++
[root@ceshiji ~]# echo $a
14
[root@ceshiji ~]# let a+=6
[root@ceshiji ~]# echo $a
20
小數運算【bc】(可以做邏輯運算,管道操作方便)
[root@ceshiji ~]# echo "84515*4511.894654+4856.844*154.158-15451" |bc
382056047.039810
[root@ceshiji ~]# echo "899<1" |bc
0
[root@ceshiji ~]# echo "899>1" |bc
1
————————————————————————————————————————
命令的組合:
語法格式
判斷:
[]:判斷語句要在括號里執行
邏輯分隔操作
&&:給定條件必須成立,整個測試結果才為真
||:只要其中一個條件成立,整個測試結果為真
;:先執行,后執行
A&&B:僅A成功了,才執行B
A;B:執行A,再執行B
A||B:僅A失敗,才執行B
常見的測試操作:(目錄,文件)
-e:判斷對象是否存在,存在則為真
-d:判斷對象是否為目錄,是則為真
-f:判斷對象是否為一般文件,是則為真
-r:判斷對象是否有可讀權限,是則為真
-w:判斷對象是否有可寫權限,是則為真
-x:判斷對象是有可執行權限,是則為真
-s:判斷文件是否非空,
整數值比較:(數量)
-eq:等於
-ne:不等於
-ge:大於或等於
-le:小於或等於
-gt:大於
-lt:小於
字符串比較:
==:兩個字符串相同
!=:兩個字符串不相同
-z:字符串的值為空
-n:字符串的值不為空,(相當於! -z)
[root@ceshiji ~]# vim a.sh(刪除腳本)
#!/bin/bash
read -p "卧槽,你真要刪除啊y/n" sure(read -p 顯示在終端上的內容)
[ -z $sure ]&&exit (判斷$sure是否為空(-z)&&:符合,為則停止)
[ $sure = y ]&& rm -rf $1(如果輸入y &&符合,則繼續下一步)
[root@ceshiji ~]# ./a.sh ftp.sh
卧槽,你真要刪除啊y/ny
[root@ceshiji ~]# vim b.sh(監控登陸用戶量)
#!/bin/bash
num=`who |wc -l`(``反撇號中間寫命令,此命令統計有多少用戶,把數量放num里)
[ $num -ge 4 ]&& mail -s 'errro' root < /etc/passwd(當用戶數量大於(ge)4個&&:符合,執行發送郵件)
[root@ceshiji ~]# crontab -e(添加到計划任務監控)
* * * * * /root/b.sh
[root@ceshiji ~]# vim a.sh(猜字游戲)
#!/bin/bash
xx=$((RANDOM%10))(xx變量,RANDOM是linux系統產生的隨機數,%10表示10的數以內)
read -p "hydra[0-10]:" cai
[ $cai -eq $xx ]&& echo ok &&exit||echo kill(當輸入的數等於(eq)顯示ok並退出,不中則kill)
[root@ceshiji ~]# vim a.sh
#!/bin/bash
[ ! -d /mnt/iso ]&& mkdir /mnt/iso(!-d 取反,如果真&&:符合,則創建mnt/iso)
[ -e /ISO/rhel-server-6.7-x86_64-dvd.iso ]&& mount -o loop /ISO/rhel-server-6.7-x86_64-dvd.iso /mnt
/iso(-e:判斷對象是否存在,&&:符合,存在就掛載到mnt/iso)
————————————————————————————————————————————————————————
if語句
單分支格式:(只要判斷滿足了就執行以下命令)
if [判斷];then
命令
.. ..
fi
[root@ceshiji ~]# vim a.sh
#!/bin/bash
if [ $USER = root ];then
yum clean all
yum repolist
fi
雙分支格式:(判斷不滿足,重新判斷執行下一條件)
if [ 判斷 ];then
命令
elif [ 判斷 ];then
命令
else
命令
fi
測試:
[root@ceshiji ~]# vim a.sh
#!/bin/bash
read -p 暗號?:hydra
if [ $hydra -gt 9999 ];then
echo "hail hydra"
elif [ $hydra -gt 8888 ];then
echo "hail"
elif [ $hydra -gt 7777 ];then
echo "hydra"
else
echo "mdzz"
fi
測試:猜數字游戲
[root@ceshiji ~]# vim b.sh
#!/bin/bash
suiji=$[RANDOM%100]
for i in {1..9}(i是變量,代表1到9的所有整數,代表最多猜9次)
do
read -p "hydra[0-99]"shuo
if [ $shuo -eq $suiji ];then
echo "hail hydra"
exit
elif [ $shuo -gt $suiji ];then
echo "mdzz"
else
echo "mdzz"
fi
done
多分支格式:(判斷不滿足,重新判斷執行下一條件,依此類推)
if [ 判斷 ]&&[ 判斷 ];then
命令
elif[ 判斷 ]&&[ 判斷 ];then
命令
else
命令
fi
[root@ceshiji ~]# vim c.sh
#!/bin/bash
read -p "等級(1-100)": "dj"
if [ $dj -ge 85 ]&&[ $dj -le 100 ];then
echo "$dj級! dalao"
elif [ $dj -ge 70 ]&&[ $dj -le 84 ];then
echo "$dj級! emmm"
else
echo "$dj級! mdzz"
fi
——————————————————————————————————