1. 寫一個指令碼,利用迴圈計算10的階乘
#!/bin/sh</p><p>factorial=1</p><p>for a in `seq 1 10`</p><p>do</p><p>factorial=`expr $factorial /* $a`</p><p>done</p><p>echo "10! = $factorial"<br />
2. 寫一個指令碼,執行後,列印一行提示“Please input a number:",要求使用者輸入數值,然後列印出該數值,然後再次要求使用者輸入數值。直到使用者輸入"end"停止。
#!/bin/sh</p><p>unset var</p><p>while [ "$var" != "end" ]</p><p>do</p><p>echo -n "please input a number: "</p><p>read var</p><p>if [ "$var" = "end" ]</p><p>then</p><p>break</p><p>fi</p><p>echo "var is $var"</p><p>done</p><p>
3. 寫一個指令碼,利用迴圈和continue關鍵字,計算100以內能被3整除的數之和
#!/bin/sh</p><p>sum=0</p><p>for a in `seq 1 100`</p><p>do</p><p>if [ `expr $a % 3` -ne 0 ]</p><p>then</p><p>continue</p><p>fi</p><p>echo $a</p><p>sum=`expr $sum + $a`</p><p>done</p><p>echo "sum = $sum"<br />
4.一個函數,利用shift計算所有參數乘積,假設參數均為整數
#! /bin/sh</p><p>result=1</p><p>while [ $# -gt 0 ]</p><p>do</p><p>result=`expr $result /* $1`</p><p>shift</p><p>done</p><p>echo $result</p><p>
5.寫一個指令碼,可以根據參數檔案名稱,以正確的參數調用tar來解壓縮tar.gz或tar.bz2檔案。
#!/bin/sh</p><p>case ${1##*.tar.} in </p><p>bz2)</p><p>tar jxvf $1</p><p>;;</p><p>gz)</p><p>tar zxvf $1</p><p>;;</p><p>*)</p><p>echo "wrong file type"</p><p>esac</p><p>
6.寫一個指令碼以方便使用者查詢rpm的相關資訊。這個指令碼首先提示使用者選取查詢依據,比如檔案名稱,包名,全部等。然後提示使用者選取查詢資訊,比如包名,包裡所包含的所有檔案,包的資訊等。然後詢問是否繼續查詢,是則迴圈剛才的過程,否則退出。
#!/bin/sh</p><p>RPM=/bin/rpm</p><p>option="-q"</p><p>while true</p><p>do</p><p>echo "what to query?"</p><p>select var in "All" "file" "package name" </p><p>do</p><p>case $var in</p><p>All)</p><p>option=$option"a"</p><p>break</p><p>;;</p><p>file)</p><p>echo -n "please input file name: "</p><p>option=$option"f"</p><p>read argument</p><p>break</p><p>;;</p><p>package/ name)</p><p>echo -n "please input package name: "</p><p>read argument</p><p>break</p><p>;;</p><p>*)</p><p>echo "please choose between 1-3"</p><p>;;</p><p>esac</p><p>done</p><p>echo "what do you want to know?"</p><p>select var in "location" "info" "package name"</p><p>do</p><p>case $var in</p><p>location)</p><p>option=$option"l"</p><p>break</p><p>;;</p><p>info)</p><p>option=$option"i"</p><p>break</p><p>;;</p><p>package/ name)</p><p>break</p><p>;;</p><p>*)</p><p>echo "please choose between 1-3"</p><p>;;</p><p>esac</p><p>done</p><p>${RPM} $option $argument</p><p>echo "continue? [yes/no]"</p><p>read answer</p><p>if [ answer = "no" ]</p><p>then</p><p>break</p><p>fi