一.實驗要求: 給定任意一個字元N(N>0),然後列印NxN的倒序乘法表。 二.解決問題: #/!bin/bash# #define functionNxN_fun(){ local i=$1 #定義一個局部變數i控制外層迴圈 while [ $i -ge 1 ];do local j=$i #定義 ...
一.實驗要求:
- 給定任意一個字元N(N>0),然後列印NxN的倒序乘法表。
二.解決問題:
#/!bin/bash
#
#define function
NxN_fun(){
local i=$1 #定義一個局部變數i控制外層迴圈
while [ $i -ge 1 ];do
local j=$i #定義一個局部變數j控制內層迴圈
while [ $j -ge 1 ];do
echo -e -n "$i*$j=$[i*j]\t"
let j--
done
echo #換行
let i--
done
}
#main
Flag=$(echo "$1" | sed 's/[0-9]//g' | wc -c) #判斷腳本參數是整型還是字元
if [ ! $# -eq 1 ];then #判斷腳本參數個數
echo ">_<||| 很尷尬~!!! Usage:$(basename $0) num."
exit 5
elif [ ! $Flag -eq 1 ];then #Flag值不等於1則給定的腳本參數為字元型
echo ">_<||| 很尷尬~!!! Usage:$(basename $0) num." #表情符號還是挺不錯的
exit 5
fi
NxN_fun $1
[ $? -eq 0 ]&&echo "列印$1*$1乘法表完成 (^_^) 嘻嘻"||echo "函數執行錯誤,請檢查...(b_d) 戴了副眼鏡" #函數執行成功則列印乘法表
三.實驗結果:
四.實驗思考?
1.怎麼判斷腳本所給參數是字元還是整型,有沒有其他的方法?
2.外層while迴圈參數能不能直接給$1 ,能怎麼改,不能為什麼?
五.讓人欣慰的代碼段是:
Flag=$(echo "$1" | sed 's/[0-9]//g' | wc -c)