標籤:shell指令碼 wlile if case 迴圈語句
實驗要求:
1、編寫一個名為sum.sh的指令碼,提示使用者輸入一個小於100的整數,並計算從1到該數之間所有整數的和
2、編寫一個名為tar.sh的指令碼,用來解壓.tar.gz或.tar.bz2格式的壓縮檔,要求採用case語句
實驗步驟:
(一)
vi sum.sh
#!/bin/bash
# this is sum
while : #迴圈條件為真,等同於while true,如果沒有exit 0或者break 則一直執行迴圈
do
read -p "請輸入一個1-100的整數: " nu #把螢幕輸出的數字賦值給變數nu
expr $nu + 0 &> /dev/null #此條語句作用是判斷這個數字是否為0或者不是整數,並且不在螢幕顯示這個數
if [ $? -ne 0 ] || [ $nu -ge 100 ] #如果上條語句是非0的結果則表示錯誤,或者這個數大於等於100也不符合實驗要求
then echo "您輸入的$nu不符合要求請重新輸入:" #提示錯誤資訊要求重新輸入
else #不是以上結果則執行下面的語句
s=0 i=1 #給變數初始化賦值
while [ $i -le $nu ] #因為當輸入的數字小於100都要執行相加,所以當i大於這個數時停止迴圈
do
s=$(expr $s + $i) #s從0開始,i從1開始,把每次迴圈的結果賦值給s然後繼續和i相加,一直加到輸入的整數
let i++ #每迴圈一次i+1
done
echo "1-$nu之間的整數和是:$s" #將結果輸出,停止迴圈
break
fi
done
驗證結果:
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/54/2E/wKioL1R7MfWAZ1CyAAB08G23yhM870.jpg" style="float:none;" title="1.jpg" alt="wKioL1R7MfWAZ1CyAAB08G23yhM870.jpg" />
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/54/2F/wKiom1R7MW6S_F39AADdp8_Przk488.jpg" style="float:none;" title="2.jpg" alt="wKiom1R7MW6S_F39AADdp8_Przk488.jpg" />
(二)
vi tar.sh
#!/bin/bash
# this is test
read -p "請輸入您想解壓的壓縮檔:" f #將輸入的檔案名稱賦值給變數f
s=$(file $f | awk ‘{print $2}‘) #判斷這個檔案是哪種格式的壓縮檔
case $s in #若結果為gzip則用gzip解壓
gzip)
echo "將用gzip工具為該檔案解壓"
tar -zvxf $f
;;
bzip2) #若結果為bzip2則用bzip2解壓
echo "將用bzip工具為該檔案解壓"
tar -jxvf $f
;;
*) #其他結果則表示不是壓縮檔,螢幕輸出錯誤資訊
echo "不是標準的壓縮檔"
esac
驗證結果:
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/54/2F/wKiom1R7MsfwhzwCAACua4h6qqQ132.jpg" title="3.jpg" alt="wKiom1R7MsfwhzwCAACua4h6qqQ132.jpg" />
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/54/2E/wKioL1R7Mx-RZ0kdAAB1-lNr3n4072.jpg" style="float:none;" title="4.jpg" alt="wKioL1R7Mx-RZ0kdAAB1-lNr3n4072.jpg" />
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/54/2E/wKioL1R7MyDTmnA-AABPeP6JQWY959.jpg" title="6.jpg" style="float:none;" alt="wKioL1R7MyDTmnA-AABPeP6JQWY959.jpg" />
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/54/2F/wKiom1R7MpeQCCqaAAC3tXWzTrc537.jpg" style="float:none;" title="5.jpg" alt="wKiom1R7MpeQCCqaAAC3tXWzTrc537.jpg" />
本文出自 “挨踢女的網路成長之路” 部落格,請務必保留此出處http://shengjie.blog.51cto.com/8734352/1584881
2個簡單shell指令碼(if,while,case語句)