- 终端输入一个字符,判断是大写字母小写字母还是数字字符。
#!/bin/bash read -p "input字符--->" a case $a in [[:upper:]]) echo 大写字母$a ;; [[:lower:]]) echo 小写字母$a ;; [0-9]) echo 数字字符$a ;; *) echo "error" esac
- 终端输入年月,需要考虑闰平年,判断该月有多少天(2月闰年29天,平年28天)
#!/bin/bash read -p "输入年份" year read -p "输入月份" month if test $((year%4)) -eq 0 && test $((year%100)) -ne 0 || test $((year%400)) -eq 0 then echo "$year是闰年 " case $month in 1|3|5|7|8|10|12) echo $month月有31天 ;; 2) echo $month月有29天 ;; 4|6|9|11) echo $month月有30天 ;; *) echo error esac else echo "$year不是闰年" case $month in 1|3|5|7|8|10|12) echo $month月有31天 ;; 2) echo $month月有28天 ;; 4|6|9|11) echo $month月有30天 ;; *) echo error esac fi
- 使用循环求100-1000内的水仙花数
#!/bin/bash echo 100-1000内的水仙花数有 sum=0 for((i=100;i<1000;i++)) do a=i%10 b=i/10%10 c=i/100 sum=$((a**3+b**3+c**3)) if [ $sum -eq $i ] then echo $sum fi done
- 求稀疏数组中元素的和(下标不连续)
#!/bin/bash a=([9]=100 [3]=200 [2]=4 [1]=6 [6]=9) for i in ${a[*]} do ((sum+=i)) done echo $sum
- 使用循环求家目录下目录文件和普通文件的个数
#!/bin/bash n=0 m=0 for file in /home/ubuntu/* do if test -d $file then ((n++)) elif [ -f $file ] then ((m++)) fi done echo 目录$n个 echo 文件$m个
- 用shell写冒泡排序
#!/bin/bash read -a a len=${#a[*]} for ((i=1;i<$len;i++)) do for ((j=0;j<$len-1;j++)) do if [ ${a[$j]} -gt ${a[$j+1]} ] #lt降序 then temp=${a[$j]} a[$j]=${a[$[$j+1]]} a[$[$j+1]]=$temp fi done done echo ${a[*]}
- 终端输入学生成绩,判断等级100-90A,90-80B,80-70C,70-60D,60以下不及格。(把输入不合理也考虑进去)
#!/bin/bash read -p "学生成绩" a case $a in 9[0-9]|100) echo "A" ;; 8[0-9]) echo "B" ;; 7[0-9]) echo "C" ;; 6[0-9]) echo "D" ;; [0-5][0-9]|[0-9]) echo 不及格 ;; *) echo "error" esac
思维导图