```bash
#!/bin/bash
# 春节庆典脚本
# 中国新年庆祝工具
# 颜色定义
RED=‘\033[0;31m’
GREEN=‘\033[0;32m’
YELLOW=‘\033[1;33m’
BLUE=‘\033[0;34m’
PURPLE=‘\033[0;35m’ CYAN=‘\033[0;36m’
NC=‘\033[0m’ # No Color
# 十二生肖
ZODIAC=(“鼠” “牛” “虎” “兔” “龙” “蛇” “马” “羊” “猴” “鸡” “狗” “猪”)
# 祝福语列表
GREETINGS=(
"新春快乐,万事如意!"
"恭喜发财,红包拿来!"
"龙马精神,大吉大利!"
"心想事成,步步高升!"
"年年有余,岁岁平安!"
"福星高照,财源广进!"
"阖家欢乐,幸福美满!"
"身体健康,工作顺利!"
)
# 春节习俗
CUSTOMS=(
"🧧 发红包:长辈给晚辈发红包,寓意压岁驱邪"
"🏮 贴春联:用红纸写吉祥话贴在门上"
"🎆 放鞭炮:驱邪避灾,迎接新年"
"🥟 吃饺子:北方人过年必吃,寓意招财进宝"
"🍊 吃年糕:南方人过年吃年糕,寓意年年高升"
"🎊 舞龙舞狮:祈求风调雨顺,国泰民安"
"🏮 挂灯笼:象征团圆和喜庆"
"🍊 吃年夜饭:全家人团聚的重要时刻"
)
# 显示标题
show_title() {
clear
echo -e "${RED}"
cat << "EOF"
_____ __ __ _
/ ____| | \/ | | |
| (__ __ _ __ | \ / | ___| |_
\___ \ / _ \ '__| | |\/| |/ _ \ __|
____) | __/ | | | | | __/ |_
|___/ \__|_| |_| |_|\__|\__|
EOF
echo -e "${CYAN} 🏮 中国新年庆典 🏮${NC}"
echo ""
}
# 获取当前生肖
get_zodiac_year() {
local year=$1
local zodiac_index=$(( (year - 4) % 12 ))
if \[ $zodiac_index -lt 0 \]; then
zodiac_index=$((zodiac_index + 12))
fi
echo ${ZODIAC\[$zodiac_index\]}
}
# 显示生肖ASCII艺术
show_zodiac() {
local current_year=$(date +%Y)
local zodiac=$(get_zodiac_year $current_year)
echo -e "${YELLOW}"
case $zodiac in
"龙")
cat << "EOF"
/\\\_/\\
( o.o )
> ^ <
🐉 龙年大吉 🐉
EOF
;;
"蛇")
cat << "EOF"
\~\~\~\~\~\~\~
/ o o \\
\\ ^ /
\~\~\~\~\~\~\~
🐍 蛇年吉祥 🐍
EOF
;;
"马")
cat << "EOF"
/\\
/ \\
/\___\_\\
// || \\\\
🐴 马到成功 🐴
EOF
;;
"羊")
cat << "EOF"
/ \\
/ o o\\
( ^ )
\\\__\_/
🐑 三羊开泰 🐑
EOF
;;
"猴")
cat << "EOF"
/\\\_/\\
( o.o )
/ | \\
🐵 猴年大吉 🐵
EOF
;;
"鸡")
cat << "EOF"
(o)(o)
/ O \\
/ ^ \\
🐓 鸡年大吉 🐓
EOF
;;
"狗")
cat << "EOF"
/ \\\_\_
( @\\\__\_
/ O
/ (\____\_/
/_____/ U
🐶 狗年旺旺 🐶
EOF
;;
"猪")
cat << "EOF"
(o)(o)
/ O \\
/ ^ \\
🐷 猪年大吉 🐷
EOF
;;
"鼠")
cat << "EOF"
/\\\_/\\
( o.o )
> ^ <
🐀 鼠年大吉 🐀
EOF
;;
"牛")
cat << "EOF"
(o)(o)
/ O \\
/ ^ \\
🐂 牛年大吉 🐂
EOF
;;
"虎")
cat << "EOF"
/\\\_/\\
( o.o )
> ^ <
🐅 虎年大吉 🐅
EOF
;;
"兔")
cat << "EOF"
/\\\_/\\
( o.o )
> ^ <
🐰 兔年大吉 🐰
EOF
;;
esac
echo -e "${NC}当前年份: ${GREEN}$current_year年 - $zodiac年${NC}"
echo ""
}
# 计算到下一个春节的天数
countdown_to_spring_festival() {
local current_year=$(date +%Y)
local current_month=$(date +%m)
local current_day=$(date +%d)
\# 春节日期(简化版,实际需要根据农历计算)
\# 这里使用近似值:春节通常在1月21日到2月20日之间
local spring_festival_month=1
local spring_festival_day=29 # 2026年春节是1月29日
\# 如果当前日期已过今年春节,计算到明年春节
if \[ $current_month -gt $spring_festival_month \] || \\
(\[ $current_month -eq $spring_festival_month \] && \[ $current_day -gt $spring_festival_day \]); then
spring_festival_year=$((current_year + 1))
\# 这里需要根据实际农历日期调整
spring_festival_month=2
spring_festival_day=17 # 2027年春节是2月17日
else
spring_festival_year=$current_year
fi
\# 计算天数差(简化计算)
local sf_date="$spring_festival_year-$spring_festival_month-$spring_festival_day"
local current_date="$current_year-$current_month-$current_day"
echo -e "${PURPLE}📅 距离 $spring_festival_year 年春节还有:${NC}"
echo -e "${YELLOW}"
\# 使用date命令计算天数差
local days_diff=$(( ($(date -d "$sf_date" +%s) - $(date -d "$current_date" +%s)) / 86400 ))
if \[ $days_diff -gt 0 \]; then
echo " $days_diff 天"
elif \[ $days_diff -eq 0 \]; then
echo " 今天就是春节!🎉🎉🎉"
else
echo " 今年春节已经过了!"
fi
echo -e "${NC}"
}
# 显示随机祝福语
show_greeting() {
local random_index=$((RANDOM % ${#GREETINGS\[@\]}))
echo -e "${GREEN}✨ ${GREETINGS\[$random_index\]} ✨${NC}"
echo ""
}
# 显示春节习俗
show_custom() {
echo -e "${CYAN}📜 春节习俗:${NC}"
echo ""
for custom in "${CUSTOMS\[@\]}"; do
echo " $custom"
sleep 0.3
done
echo ""
}
# 显示菜单
show_menu() {
echo -e "${YELLOW}╔════════════════════════════════╗${NC}"
echo -e "${YELLOW}║ 春节庆典菜单选项 ║${NC}"
echo -e "${YELLOW}╠════════════════════════════════╣${NC}"
echo -e "${YELLOW}║ 1. 显示新年祝福语 ║${NC}"
echo -e "${YELLOW}║ 2. 查看春节倒计时 ║${NC}"
echo -e "${YELLOW}║ 3. 了解春节习俗 ║${NC}"
echo -e "${YELLOW}║ 4. 显示生肖信息 ║${NC}"
echo -e "${YELLOW}║ 5. 查看所有功能 ║${NC}"
echo -e "${YELLOW}║ 0. 退出程序 ║${NC}"
echo -e "${YELLOW}╚════════════════════════════════╝${NC}"
echo ""
}
# 主函数
main() {
show_title
show_zodiac
while true; do
show_menu
echo -n -e "${BLUE}请选择 (0-5): ${NC}"
read choice
case $choice in
1)
clear
show_title
show_zodiac
show_greeting
;;
2)
clear
show_title
show_zodiac
countdown_to_spring_festival
;;
3)
clear
show_title
show_zodiac
show_custom
;;
4)
clear
show_title
show_zodiac
;;
5)
clear
show_title
show_zodiac
show_greeting
countdown_to_spring_festival
show_custom
;;
0)
clear
echo -e "${GREEN}"
cat << "EOF"
╔════════════════════════════════════╗
║ ║
║ 祝您新春快乐!万事如意! ║
║ ║
║
恭喜发财,红包拿来!
║
║ ║
╚════════════════════════════════════╝
EOF
echo -e "${NC}"
exit 0
;;
\*)
echo -e "${RED}无效选择,请重新输入!${NC}"
sleep 1
;;
esac
echo ""
echo -n -e "${BLUE}按回车键继续...${NC}"
read
clear
show_title
show_zodiac
done
}
# 运行主函数
main%
```
