1. 无符号整数,不考虑翻转后超出范围的情况,你需要将这个整数中每位上的数字进行反转。
输入:123 输出321
输入:45678 输出87654
#!/bin/bash
read -p "请输入一个无符号整数>>" var
len=${#var} #取得整数长度
for ((i=1;i<=len;i++))
do
var1= "$var1${var:0-i:1}" #将整数以倒置方式取出并存入新的变量中
done
echo "var1=$var1"
代码运行结果
请输入一个无符号整数>>123456
var1=654321
2. 从终端输入字符串,求出小写字母的个数,大写字母的个数,数字的个数。
#!/bin/bash
read -p "请输入一串字符串>>" str
len=${#str} #取得字符串长度
count=0 #统计小写字母个数
Count=0 #统计大写字母个数
export LC_ALL=C #取消本地语序
for ((i=1;i<=$len;i++)) #遍历字符串
do
var=${str:i-1:1} #依次取出各个字符
case $var in
[a-z])
((count++))
;;
[A-Z])
((Count++))
;;
esac
done
echo "小写字母个数为$count,大写字母个数为$Count"
unset LC_ALL #恢复本地语序
代码运行结果
请输入一串字符串>>asdfASD
小写字母个数为4,大写字母个数为3
3、要求输入年月日,输出这是今年的第几天
#!/bin/bash
read -p "请输入年份>>" year
read -p "请输入月份>>" month
read -p "请输入日>>" day
num=0
er=28
flag=0
if [ $((year%4)) -eq 0 ] && [ $((year%100)) -ne 0 ] || [ $((year%400)) -eq 0 ] #判断平闰
then
er=29
fi
case $month in
"1")
sum=$day
;;
"2")
sum=$(($day+31))
;;
"3")
sum=$(($day+31+$er))
;;
"4")
sum=$(($day+31+$er+31))
;;
"5")
sum=$(($day+31+$er+31+30))
;;
"6")
sum=$(($day+31+$er+31+30+31))
;;
"7")
sum=$(($day+31+$er+31+30+31+30))
;;
"8")
sum=$(($day+31+$er+31+30+31+30+31))
;;
"9")
sum=$(($day+31+$er+31+30+31+30+31+31))
;;
"10")
sum=$(($day+31+$er+31+30+31+30+31+31+30))
;;
"11")
sum=$(($day+31+$er+31+30+31+30+31+31+30+31))
;;
"12")
sum=$(($day+31+$er+31+30+31+30+31+31+30+31+30))
;;
*)
echo "输入的数据有误"
flag=1
;;
esac
if [ $flag -eq 0 ]
then
echo "是该年第$sum天"
fi
代码运行结果
请输入年份>>2000
请输入月份>>5
请输入日>>23
是该年第144天
-----------------------------------
请输入年份>>2001
请输入月份>>6
请输入日>>23
是该年第174天
------------------------------------
请输入年份>>2001
请输入月份>>5
请输入日>>23
是该年第143天