“算命大师”脚本

算命大师

Shell脚本编写

  编写程序如下:

#!/bin/bash
echo "------算命大师------"
zodiac=("鼠" "牛" "虎" "兔" "龙" "蛇" "马" "羊" "猴" "鸡" "狗" "猪")
constellation=("水瓶座" "双鱼座" "白羊座" "金牛座" "双子座" "巨蟹座" "狮子座" "处女座" "天秤座" "天蝎座" "射手座" "摩羯座")
mark=(20 19 21 20 21 22 23 23 23 24 23 22)

while true
do
	echo ""
	read -p "请输入你的生日(YYYY-MM-DD): " birthday
	
	# quit
	if [[ ${birthday} == "quit" || ${birthday} == "q" ]]
	then
		break
	fi

	# 检查输入是否正确
	if [[ ${#birthday} -ne 10  ||  ${birthday:4:1} != "-"  ||  ${birthday:7:1} != "-" ]]
	then
		echo "输入格式错误哦!"
		continue
	fi
	# 此处日期判断方法写法参考:https://www.cnblogs.com/guotianqi/p/7520026.html
	if echo ${birthday} | grep -q -E "[0-9]{4}-[0-9]{2}-[0-9]{2}" && \
	   date -d $birthday +%Y%m%d > /dev/null 2>&1
	then :
	else
		echo "输入日期非法!"
		continue
	fi
	
	# 提取年月日信息
	year=${birthday:0:4}
	month=${birthday:5:2}
	day=${birthday:8:2}

	# 计算属相 
	zodiac_index=(year-4)%12  # 公元4年为鼠年
	echo "属相: "${zodiac[zodiac_index]}

	# 计算星座
	if [ ${day} -gt ${mark[month]} ]
	then
		constellation_index=(month-1)%12
	else 
		constellation_index=(month-2)%12
	fi
	echo "星座: "${constellation[constellation_index]}
done

测试

  使用bash ./fate.sh运行该脚本,对各类情况进行测试,如下:
在这里插入图片描述
  观察到该脚本成功运行,并正确输出属相及星座信息。

NOTE

  脚本语言中“[[ ]]”与“[]”的区别,由于“-”符号的特殊性,在使用“[ ]”指定if语句command部分时会导致错误的发生,因此使用更完善和强大的“[[ ]]”来进行检测可避免该错误的出现。
  对于日期是否非法的检测比较精巧,值得推敲。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

D-A-X

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值