Shell練習(十)
阿新 • • 發佈:2018-03-06
linux shell 習題1:用戶交互腳本
要求:寫一個腳本,執行後,打印一行提示“Please input a number:”,要求用戶輸入數值,然後打印出該數值,然後再次要求用戶輸入數值。直到用戶輸入”end”停止。
參考答案:
#!/bin/bash # date:2018年3月5日 while : do read -p "Please input a number:(end for exit) " n num=` echo $n |sed -r 's/[0-9]//g'|wc -c ` if [ $n == "end" ] then exit elif [ $num -ne 1 ] then echo "Please input a number。" else echo "$n" fi done
習題2:腳本傳參
要求:使用傳參的方法寫個腳本,實現加減乘除的功能。例如: sh a.sh 1 2,這樣會分別計算加、減、乘、除的結果。
1 腳本需判斷提供的兩個數字必須為整數
2 當做減法或者除法時,需要判斷哪個數字大
3 減法時需要用大的數字減小的數字
4 除法時需要用大的數字除以小的數字,並且結果需要保留兩個小數點。
參考答案:
#/bin/bash # date: 2018年3月5日 if [ $# -ne 2 ];then echo "Please Usage: ./$0 num1 num2." exit 1 fi is_int(){ if echo "$1"|grep -q [^0-9];then echo "$1 is not a number." exit 1 fi } max(){ if [ $1 -ge $2 ];then echo $1 else echo $2 fi } min(){ if [ $1 -lt $2 ];then echo $1 else echo $2 fi } sum(){ echo "$1 + $2 = $[$1+$2]" } sub(){ large=`max $1 $2` small=`min $1 $2` echo "$large - $small = $[$large-$small]" } mul(){ echo "$1 * $2 = $[$1*$2]" } div(){ large=`max $1 $2` small=`min $1 $2` d=`echo "scale=2; $large / $small"|bc` echo "$large / $small = $d" } is_int $1 is_int $2 sum $1 $2 sub $1 $2 mul $1 $2 div $1 $2
習題3:被3整除
要求:寫一個腳本: 計算100以內所有能被3整除的正整數的和
參考答案:
#/bin/bash # date: 2018年3月5日 sum=0 for i in `seq 1 100` do if[ $[$i%3] -eq 0 ];then sum=$[$sum+$i] fi done echo "sum=$sum"
Shell練習(十)