1.无符号整数,不考虑翻转后超出范围的情况,你需要将这个整数中每位上的数字进行反转。
输入:123 输出321
输入:45678 输出87654
#!/bin/bash
read -p "输入一串整数:" num
sum=0
while [ $num -ne 0 ]
do
((sum=$sum*10))
((sum+=$num%10))
((num=$num/10))
done
echo 反转后:$sum
2.从终端输入字符串,求出小写字母的个数,大写字母的个数,数字的个数。
#!/bin/bash
read -p "输入字符串:" str
little=0
big=0
num=0
len=${#str}
i=0
while [ $i -le $len ] #从第一个字符开始遍历
do
var=${str:$i:1 }
case $var in
[0-9]) #计算数字
((num++))
;;
[A-Z]) #计算大写字母
((big++))
;;
[a-z])
((little++)) #计算小写字母
;;
esac
((i++))
done
echo 数字$num个,小写字母$little个,大写字母$big个
3.要求输入年月日,输出这是今年的第几天
#!/bin/bash
read -p "输入年月日:" year month day
sum=0
case $month in #取月份来计算日子
1)
sum=$day
;;
2)
((sum=$day+31))
;;
3)
((sum=$day+59))
;;
4)
((sum=$day+90))
;;
5)
((sum=$day+120))
;;
6)
((sum=$day+151))
;;
7)
((sum=$day+181))
;;
8)
((sum=$day+212))
;;
9)
((sum=$day+243))
;;
10)
((sum=$day+273))
;;
11)
((sum=$day+304))
;;
12)
((sum=$day+334))
;;
*)
echo "月份输入错误"
;;
esac
#判断平闰年,判断为平年时,若是在2月之后的月份,则总日子加1
if [ $[$year % 4] -eq 0 ] && [ $[ $year % 100] -ne 0 ] || [ $[ $year % 400 ] -eq 0 ]
then
echo 是$year年的第$sum天
else
if [ $month >2 ]
then
echo 是$year年的第$[$sum+1]天
fi
fi
九九乘法表
#!/bin/bash
i=1
while [ $i -ne 10 ]
do
j=1
while [ $j -le $i ]
do
echo -n " $i x $j = "$[ $i*$j ]
((j++))
done
echo " "
((i++))
Done