作业:
1.终端输入一个字符,判断是大写字母小写字母还是数字字符。
2.终端输入年月,需要考虑闰平年,判断该月有多少天(2月闰年29天,平年28天)
3.使用循环求100-1000内的水仙花数
4.求稀疏数组中元素的和(下标不连续)
5.使用循环求家目录下目录文件和普通文件的个数
6.用shell写冒泡排序
7.终端输入学生成绩,判断等级100-90A,90-80B,80-70C,70-60D,60以下不及格。(把输入不合理也考虑进去)
8.整理今天的知识点
1.终端输入一个字符,判断是大写字母小写字母还是数字字符。
#!/bin/bash
read -p "请输入一个字符:" -n 1 z
echo
case $z in
[A-Z])
echo 该字符为大写字母
;;
[a-z])
echo 该字符为小写字母
;;
[0-9])
echo 该字符为数字
;;
*)
echo 该字符为其他字符
;;
esac
2.终端输入年月,需要考虑闰平年,判断该月有多少天(2月闰年29天,平年28天)
#!/bin/bash
read -p "请输入年份:" y
read -p "请输入月份:" m
case $m in
1|3|5|7|8|10|12)
echo ${y}年${m}月有31天
;;
4|6|9|11)
echo ${y}年${m}月有30天
;;
2)
i=$((y%4))
j=$((y%100))
k=$((y%400))
if [ $i == 0 ] && [ $j != 0 ] || [ $k == 0 ]
then
echo ${y}年${m}月有29天
else
echo ${y}年${m}月有28天
fi
esac
3.使用循环求100-1000内的水仙花数
#!/bin/bash
for i in {100..1000}
do
num=$i
sum=0
while [ $num -gt 0 ]
do
digit=$((num % 10))
sum=$((sum + digit ** 3))
num=$((num/10))
done
if [ $sum -eq $i ]
then
echo "$i 是水仙花数"
fi
done
4.求稀疏数组中元素的和(下标不连续)
#!/bin/bash
# 定义稀疏数组
sparseArray=(1 3 6 10 15)
# 初始化总和为 0
sum=0
# 遍历稀疏数组的元素
for element in "${sparseArray[@]}"; do
# 将当前元素加到总和中
sum=$((sum + element))
done
# 输出总和
echo "稀疏数组中元素的和为: $sum"
5.使用循环求家目录下目录文件和普通文件的个数
# 定义家目录路径
homeDirectory="$(echo ~)"
# 初始化目录文件个数和普通文件个数
directoryCount=0
fileCount=0
# 使用 for 循环遍历家目录下的文件和目录
for file in "$homeDirectory"/*; do
# 判断文件是否为目录
if [ -d "$file" ]; then
# 如果是目录,则目录文件个数加 1
directoryCount=$((directoryCount + 1))
elif [ -f "$file" ]; then
# 如果是普通文件,则普通文件个数加 1
fileCount=$((fileCount + 1))
fi
done
# 输出结果
echo "目录文件个数: $directoryCount"
echo "普通文件个数: $fileCount"
6.用shell写冒泡排序
# 冒泡排序函数
bubbleSort() {
n=${#array[@]}
for ((i=0; i<n-1; i++)); do
for ((j=0; j<n-i-1; j++)); do
if [ ${array[j]} > ${array[j+1]} ]; then
temp=${array[j]}
array[j]="${array[j+1]}"
array[j+1]="$temp"
fi
done
done
}
# 示例数组
array=(10 8 6 4 2)
# 打印原始数组
echo "原始数组:${array[@]}"
# 调用冒泡排序函数进行排序
bubbleSort
# 打印排序后的数组
echo "排序后的数组:${array[@]}"
7.终端输入学生成绩,判断等级100-90A,90-80B,80-70C,70-60D,60以下不及格。(把输入不合理也考虑进去)
#!/bin/bash
read -p "请输入学生成绩:" m
if [ $m -gt 100 ] || [ $m -lt 0 ]
then
echo 该输入不合理
else
case $m in
9?|1??)
echo 该学生成绩为A
;;
8?)
echo 该学生成绩为B
;;
7?)
echo 该学生成绩为C
;;
6?)
echo 该学生成绩为D
;;
*)
echo 该学生成绩不及格
esac
fi
8.整理今天的知识点