1.终端输入一个字符,判断是大写字母小写字母还是数字字符。
#!/bin/bash
read -p "输入一个字符" var
case $var in
[[:lower:]])
echo 小写字母
;;
[[:upper:]])
echo 大写字母
;;
[1-9])
echo 数字字符
;;
*)
echo "other"
esac
2.终端输入年月,需要考虑闰平年,判断该月有多少天(2月闰年29天,平年28天)
#!/bin/bash
read -p "输入年" year
read -p "输入月" month
er=28
if test $((year%4)) -eq 0 -a $((year%100)) -ne 0 -o $((year%400)) -eq 0
then
echo ${year}是闰年
er=29
else
echo ${year}是平年
fi
case $month in
1|3|5|7|8|10|12)
echo 该月有31天
;;
2)
echo 该月有${er}天
;;
4|6|9|11)
echo 该月有30天
;;
*)
echo 输入错误
esac
3.使用循环求100-1000内的水仙花数
#!/bin/bash
for((i=100;i<1000;i++))
do
((ge=$i%10))
((shi=$i%100/10))
((bai=$i/100))
if test $((ge**3+shi**3+bai**3)) -eq $i
then
echo $i
fi
done
4.求稀疏数组中元素的和(下标不连续)
#!/bin/bash
arr=([0]=15 [5]=53 [7]=41 [9]=3 [15]=9)
i=0
for i in ${arr[*]}
do
((sum+=i))
done
echo $sum
5.使用循环求家目录下目录文件和普通文件的个数
#!/bin/bash
sum1=0
sum2=0
i=0
for i in `ls ~`
do
if test -d ~/$i
then
((sum1++))
fi
if test -f ~/$i
then
((sum2++))
fi
done
echo 目录文件有$sum1个
echo 普通文件有$sum2个
6.用shell写冒泡排序
#!/bin/bash
read -p "输入数字" -a arr
i=0
j=0
temp=0
len=${#arr[*]}
for((i=1;i<len;i++))
do
for((j=0;j<len-i;j++))
do
if test ${arr[j]} -gt ${arr[j+1]}
then
temp=${arr[j]}
arr[j]=${arr[j+1]}
arr[j+1]=$temp
fi
done
done
echo ${arr[*]}
7.终端输入学生成绩,判断等级100-90A,90-80B,80-70C,70-60D,60以下不及格。(把输入不合理也考虑进去)
#!/bin/bash
read -p "输入成绩" var
if test $var -ge 0 -a $var -le 100
then
case $var in
9?|1??)
echo A
;;
8?)
echo B
;;
7?)
echo C
;;
6?)
echo D
;;
*)
echo 不及格
esac
else
echo 不合理
fi