1. 程式人生 > >Shell練習(十)

Shell練習(十)

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練習(十)