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