2022.7.15 作业

#!/bin/bash

read -p "请输入一个无符号整数>>>" num
for ((i=1;i<=${#num};i++))
do
	echo -n "${num:0-$i:1}"
done
echo ""

 

#!/bin/bash

n=0
bc=0
sc=0
read -p "请输入一个字符串>>>" str
for ((i=0;i<${#str};i++))
do
	case ${str:$i:1} in
		[0-9])
			((n++))
			;;
		[a-z])
			((sc++))
			;;
		[A-Z])
			((bc++))
			;;
		*)
			;;
	esac	
done
echo "该字符串中大写字母有$bc个,小写字母有$sc个,数字有$n个"

 

#!/bin/bash

while true
do
	read -p "请输入年月日(eg:2022/7/15)>>>" str

	year=`echo $str | cut -d / -f 1`
	month=`echo $str | cut -d / -f 2`
	day=`echo $str | cut -d / -f 3`

	if test $(( (year%4==0 && year%100!=0) || (year%400==0) )) -eq 1
	then
		flag=1
	else
		flag=0
	fi

	if test $month -lt 1 -o $month -gt 12
	then
		echo "month error(1<=month<=12),try again"
		continue
	fi

	if test $day -lt 0
	then 
		echo "day error(day>=1),try again"
		continue
	else
		case $month in 
			1|3|5|7|8|10|12)
				if test $day -gt 31
				then
					echo "day error(day<=31),try again"
					continue
				fi
				;;
			4|6|9|11)
				if test $day -gt 30
				then
					echo "day error(day<=30),try again"
					continue
				fi
				;;
			*)
				if test $flag -eq 1 -a $day -gt 29
				then
					echo "day error(day<=29),try again"
					continue
				elif test $flag -eq 0 -a $day -gt 28
				then
					echo "day error(day<=28),try again"
					continue
				fi
					;;
			esac
	fi
	break
done
count=0
for ((i=1;i<month;i++))
do		
	case $i in 
		1|3|5|7|8|10|12)
			((count+=31))
			;;
		4|6|9|11)
			((count+=30))
			;;
		*)
			if test $flag -eq 1
			then
				((count+=29))
			else
				((count+=28))
			fi
			;;
	esac
done
((count+=day))
echo "该日期是$year年的第$count天"

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值