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