Chapter15 test比較
測試與判斷
退出程序命令
exit
exit 10 返回10給shell,返回值非0位不正常退出
$? 判斷當前shell前一個進程是否正常退出
vim 8.sh
#!/bin/bash
# demo exit
pwd
exit
bash 8.sh
測試命令test
1.test命令用于檢查文件或者比較值。
2.test可以做以下測試:
文件測試吼拥,整數(shù)比較測試哺哼,字符串測試。
3.test測試語句可以簡化為 []
符號。
4.[] 符號還有擴展寫法 [[]]
兢卵,支持&& || < >
#使用man test查看test用法
usage:test EXPRESSION,也可以用中括號代替test蜈首,推薦使用。
#字符串測試,test區(qū)分大小寫肃晚。
STRING1 = STRING2 #字符串相等
STRING1 != STRING2 #字符串不相等
-z STRING #字符串長度為0
#整數(shù)比較锚贱,使用單個中括號時要用下面的字母,兩個中括號連用時关串,可以用符號拧廊,如大于號小于號等。
INTEGER1 -eq INTEGER2 #equal
INTEGER1 -ge INTEGER2 #greater or equal
INTEGER1 -gt INTEGER2 #greater
INTEGER1 -le INTEGER2 #less or equal
INTEGER1 -lt INTEGER2 #less than
#對文件的判斷
[-d /etc/ ] #-d file 文件存在并且是目錄
[-e /etc/ ] #-e file 文件存在
[-d /etc/passwd ] #-f file 文件存在并且是一個普通文件
Chapter16 if判斷的使用
使用if-then語句
if-then語句的基本用法:
if [ 測試條件成立 ] 或 命令返回值是否為0
then 執(zhí)行相應命令
fi 結束
#if [] 來判斷用戶ID
if [ $UID =0 ]
then
echo "root user"
fi
#if command 使用pwd做測試
if pwd
then
echo " pwd running"
fi
Chapter17 if-else判斷的使用
使用if-then-else語句
只有單一的條件晋修,非此即彼的關系才使用吧碾。
if-then-else語句可以在條件不成立時也運行相應的命令:
if [ 測試條件成立 ]
then 執(zhí)行相應命令
else 測試條件不成立,執(zhí)行相應命令
fi 結束
舉例:
#判斷當前用戶是否是root
vim 9.sh
#!/bin/bash
#if else demo
if [ $USER = root];then
echo "root user"
else
echo "other user"
fi
chmod u+x 9.sh
使用if-elif-else語句
if-then-else語句可以在條件不成立時也運行相應的命令墓卦,即三種并列倦春,添加了兩種條件。
if [ 測試條件成立 ]
then 執(zhí)行相應命令
elif [ 測試條件成立 ]
then 執(zhí)行相應命令
else 測試條件不成立趴拧,執(zhí)行相應命令
fi 結束
#判斷當前用戶
vim 10.sh
#!/bin/bash
#root user1 other
if [ $USER = root ];then
echo "root"
elif [ $USER = user1 ];then
echo "user1"
else
echo " other user"
fi
Chapter18 嵌套if的使用
簡而言之就是溅漾,if滿足一個條件后,再去判斷著榴,再執(zhí)行添履。
if [ 測試條件成立 ]
then 執(zhí)行相應命令
? if [ 測試條件成立 ]
? then 執(zhí)行相應命令
? fi
fi 結束
vim 11.sh
#!/bin/bash
#demo if then if then fi fi
if [ $UID = 0 ];then
echo "please run"
if [ -x /tmp/10.sh ] ; then
/tmp/10.sh #判斷10.sh是否有可執(zhí)行權限
fi
else
echo " switch user root"
fi
Chapter19 case分支
與if可以互換,case語句和select語句可以構成分支脑又。
這一部分并未進行深入學習暮胧。
case "$變量" in
? "情況1" )
? 命令... ;;
? "情況2")
? 命令... ;;
? *);;
esac
vim 12.sh
#!/bin/bash
# case demo
case "$1" in
"start"|"START")
echo $0 start.....
;;
"stop")
echo $0 stop.....
;;
"restart"|"reload")
echo $0 restart.....
;;
*) #輸入錯誤命令時會匹配*號。
echo "Usage: $0 {start|stop|restart|reload}"
;;
esac
Chapter20 循環(huán)
1.使用for循環(huán)遍歷命令的執(zhí)行結果
for循環(huán)的語法
? for 參數(shù) in 列表
? do 執(zhí)行的命令
? done 封閉一個循環(huán)
*使用反引號或$()方式執(zhí)行命令问麸,命令的結果當作列表進行處理往衷。
*列表中包含多個變量,變量用空格分隔
*對文本處理严卖,要使用文本查看命令取出文本內(nèi)容
*默認逐行處理席舍,如果文本出現(xiàn)空格會當作多行處理。
{1..9} #花括號產(chǎn)生列表
mkdir {1..9} #產(chǎn)生9個目錄
for i in {1..9}
do
echo hello ;echo $i
done
#對文件批量改名,這一部分代碼我用著是報錯的哮笆,并沒有達到我的目的
for filename in 'ls *.mp3'
do
mv $filename $(basename $filename .mp3).mp4
done
#使用basename提取出.mp3前面的名字 usage: basename filename.擴展名 擴展名
2.使用for循環(huán)遍歷變量和文件的內(nèi)容
for循環(huán)更像是從列表中取出元素来颤,處理完之后汰扭,再取出另一個元素。
2.1列表中包含多個變量福铅,變量用空格分隔
2.2對文本處理萝毛,要使用文本查看命令取出文本內(nèi)容
默認逐行處理,如果文本出現(xiàn)空格會當作多行處理滑黔。
Chapter21 C語言風格的for命令
這部分內(nèi)容并未做深入了解笆包,由于恐懼心理。
for ((變量初始化略荡;循環(huán)判斷條件庵佣;變量變化))
do
? 循環(huán)執(zhí)行的命令
done
for (( i=1 ; i<=10;i++ ))
do
echo $i
done
Chapter22 while循環(huán)和until循環(huán)
while循環(huán)
寫法:
while test測試一直成立
do
? 命令
done
until循環(huán)
與while循環(huán)相反,循環(huán)測試為假時撞芍,執(zhí)行循環(huán)秧了,為真時循環(huán)停止跨扮。
a=1
while [ $a -lt 10 ];
do ((a++));
echo $a;
done
#until的死循環(huán)
until [ 5 -lt 4 ];
do
echo always;
done
講者說序无,while使用的更常見。