#! /bin/bash
#by swztdza v1.4 2021-2-18
#--------------------------------------------
if [ -z $1 ];then
s1=0
elif [ $1 == '-h' ];then
echo -e '\e[1;34m'
echo '#脚本指引:'
echo '1.默认不填位置参数则直接运行脚本程序'
echo '2.位置参数为"-11y"时,则快捷运行plane-button模块计数一次'
echo '3.位置参数为"-211"时,则快捷运行gym模块全gym计数一次'
echo '4.位置参数为"-212"时,则快捷运行gym模块半gym计数一次'
echo '5.脚本的按键输入需要按回车才能开始执行操作'
echo -e '\e[0m'
read
exit
elif [ $1 != '-11y' -a $1 != '-211' -a $1 != '-212' ];then
#-a选项是if判断句中的 “与” 逻辑语法!!重点。这里是同时满足以上条件才赋值s1为0
s1=0
else
s1=$1
fi
#获取位置参数1,如果为空代表不是快捷执行脚本,则赋值s1为0,说明不是快捷执行,如果有参数则赋值s1
if [ $s1 == '-11y' ];then
#检测快捷执行脚本的具体判断信息,-11y代表快速记录plane-button,1次计数
sz1=1 #赋值sz1等于1,代表快速进入plane-button模块
elif [ $s1 == '-211' ];then
sz1=2
elif [ $s1 == '-212' ];then
sz1=2
fi
if [ -d '/dapub/mhm' ];then
#程序初始化if语句,检测程序工作目录是否存在,有则继续下面步骤,没有则创建工作目录并创建相应文件
while true
do
clear
echo -e "\e[1;34m"
echo "Ver 1.4"
echo " welcome to my health manage"
echo " 请输入相对应的管理编号,只能是数字"
echo ""
echo " 1.plane-button"
echo " 2.gym模块"
echo " 3.食物热量管理模块"
echo " 4.程序常规变量设置"
echo -e "\e[1;31m 5.Exit\e[0m"
echo " 6.脚本指引及脚本更新情况"
echo -e "\e[0m"
if [ $s1 == '0' ];then
#检测是否快捷键启动脚本,如不是快捷启动需要手动输入管理编号
read -p "请输入编号:" sz1
fi
if [ -z $sz1 ];then
clear
continue
#------------------------------------------------------------------------
#sz1为空的判断结束
#------------------------------------------------------------------------
elif [ $sz1 == "1" ];then
clear
#echo 'plane-button 模块已进入'
if [ -f '/dapub/mhm/plane-button' ];then
while true
do
if [ $s1 == '-11y' ];then
#检测是否快捷键启动脚本
sz2=1
fi
plane11=$(cat /dapub/mhm/plane-button |awk '{print $8}'| grep -w "`date +%W `w" | wc -l)
plane12=$(cat /dapub/mhm/plane-button | grep -w "`date| awk '{print $2}'`" | wc -l)
#--------------------------
#获取时间戳,并计算记录中相差的值,结果是计算相差多少天,一天是86400秒
#plane0变量为获取是否是无记录文档,如是,则直接赋值为0,如不是才执行获取操作
#适用于plane-button模块
plane0=`tail -1 /dapub/mhm/plane-button | awk '{print $1}'`
if [ $plane0 == "0" ];then
time9=0
time7="无"
time5="记"
time6="录"
else
time1=`date | awk '{print $2}'` #获取今天月份数值
time2=`date | awk '{print $3}'` #获取今天日期数值
time3=`date | awk '{print $6}'` #获取今天年份的数值
time4=$(date +%s -d "$time1 $time2 $time3") #获取今天时间戳
time5=`tail -1 /dapub/mhm/plane-button | awk '{print $3}'` #获取上一次的数据月份数值
time6=`tail -1 /dapub/mhm/plane-button | awk '{print $4}'` #获取上一次的数据日期数值
time7=`tail -1 /dapub/mhm/plane-button | awk '{print $7}'` #获取上一次的数据年份的数值
time8=$(date +%s -d "$time5 $time6 $time7") #获取上一次数据的时间戳
time9=$(((time4-time8)/86400))
fi
#以上是获取计算时间相差脚本模块-适用于plane-button模块
#-----------------------------------------------------------------------------
echo 'plane-button 模块已进入'
echo -e "距离上次plane-button记录天数为:\e[1;31m"$time9"天""\e[0m,上次记录日期:\e[1;31m"$time7-$time5-$time6 "\e[0m"
if [ $time9 -lt 3 ];then
echo -e '\e[1;31m间隔天数少于身体负荷值,不建议出现此条信息后仍执行plane-button动作\e[0m'
fi
echo "请输入相对应的管理编号,只能是数字"
echo "1.记录当前时间plane-button"
if [ $plane11 -gt 2 ];then
echo -e "\e[1;31m2.查看本周plane-button的记录(重要指数) 次数为:"$plane11 "\e[1;5;31m ●--\e[0m" "\e[1;31m 本周已超标\e[0m"
else
echo "2.查看本周plane-button的记录(重要指数) 次数为:"$plane11
fi
if [ $plane12 -gt 8 ];then
echo -e "\e[1;31m3.查看本月plane-button的记录(重要指数) 次数为:"$plane12 "\e[1;5;31m ●--\e[0m" "\e[1;31m 本月已超标\e[0m"
else
echo "3.查看本月plane-button的记录(重要指数) 次数为:"$plane12
fi
echo "4.查看指定月份plane-button记录"
echo "5.查看全部plane-button记录"
echo "6.返回上级菜单"
echo -e "\e[31m7.删除最近的一条plane-button记录\e[0m"
echo -e "\e[1;34m#plane-button模块规则,每周的次数达到两次以上为超标状态,超标时将在每天23点通过发送邮件提醒管理员。每月的次数达到8次以上为超标状态,超标时将在每天23点通过邮件通知管理员。另外每周日和每月的最后一天的23点都会通过邮件发送plane-button模块简报给管理员。\e[0m"
if [ $s1 != '-11y' ];then
#检测是否快捷键启动脚本
read -p "请输入管理编号:" sz2
fi
if [ -z $sz2 ];then
clear
continue
elif [ $sz2 == "1" ];then
if [ $s1 == '-11y' ];then
#检测是否快捷键启动脚本
plane3=y
fi
if [ $s1 != '-11y' ];then
#检测是否快捷键启动脚本
read -p "确认执行吗,确认输入y,不确认请输入其他" plane3
fi
if [ $plane3 == "y" ];then
plane1=`tail -1 /dapub/mhm/plane-button | awk '{print $1}'`
if [ $plane1 == "0" ];then
echo "" > /dapub/mhm/plane-button
fi
plane2=`date`
plane1=$((plane1+1))
plane6=`date +%W`
echo $plane1 $plane2 $plane6"w"
echo $plane1 $plane2 $plane6"w">> /dapub/mhm/plane-button
sleep 2
if [ $s1 == '-11y' ];then #检测是否快捷键启动脚本,如是,则直接退出
clear
exit
fi
else
clear
continue
fi
elif [ $sz2 == "2" ];then
clear
echo -e "\e[1;31m"
cat /dapub/mhm/plane-button |grep -w "`date +%W `w"
plane5=$(cat /dapub/mhm/plane-button | awk '{print $8}'|grep -w "`date +%W `w" | wc -l)
echo ""
echo "本周plane-button次数为:" $plane5
echo -e "\e[0m"
read
clear
continue
elif [ $sz2 == "3" ];then
clear
echo -e "\e[1;31m"
cat /dapub/mhm/plane-button | grep -w "`date| awk '{print $2}'`"
plane5=$(cat /dapub/mhm/plane-button | grep -w "`date| awk '{print $2}'`" | wc -l)
echo ""
echo "本月plane-button次数为:" $plane5
echo -e "\e[0m"
read
clear
continue
elif [ $sz2 == "4" ];then
clear
read -p "years input(回车默认当前年):" plane7
if [ -z $plane7 ];then
plane7=$(date +%Y)
fi
echo "输入月份要求,请使用英文名"
echo "1月-Jan 2月-Feb 3月-Mar 4月-Apr 5月-May 6月-Jun"
echo "7月-Jul 8月-Aug 9月-Sep 10月-Oct 11月-Nov 12月-Dec"
read -p "Month input(回车默认当前月):" plane8
if [ -z $plane8 ];then
plane8=`date | awk '{print $2}'`
fi
echo "正在查找" $plane7"-"$plane8"的plane-button数据记录"
echo -e "\e[1;31m"
cat /dapub/mhm/plane-button | grep "$plane7"| grep "$plane8"
plane9=$(cat /dapub/mhm/plane-button | grep "$plane7"| grep "$plane8" | wc -l)
echo ""
echo "查询的"$plane7"-"$plane8"的plane-button次数为:" $plane9
echo -e "\e[0m"
read
clear
continue
elif [ $sz2 == "5" ];then
clear
echo -e "\e[1;31m"
cat /dapub/mhm/plane-button
plane10=$(cat /dapub/mhm/plane-button | wc -l)
plane10=$((plane10-1))
echo ""
echo "所有记录的plane-button次数为:" $plane10
echo -e "\e[0m"
read
clear
continue
elif [ $sz2 == "6" ];then
break
elif [ $sz2 == "7" ];then
clear
echo -e "\e[1;31m请确认是否需要删除,是则选y,否则按其他选项或直接回车\e[0m"
read plane13
if [ $plane13 == "y" ];then
plane14=`cat /dapub/mhm/plane-button | wc -l`
if [ $plane14 -lt 2 ];then
echo "已没有记录可以删除"
sleep 2
clear
continue
fi
#echo -e "\e[1;31m已删除最后一行的plane-button记录!!\e[0m"
sed -i ${plane14}d /dapub/mhm/plane-button
echo -e "\e[1;31m已删除最后一行的plane-button记录!!\e[0m"
sleep 2
elif [ -z $plane13 ];then
clear
continue
else
clear
continue
fi
clear
continue
fi
clear
continue
done
#sleep 1
else
echo 'plane-button 模块已进入'
echo "正在创建相应模块文件,请稍后"
echo "0" >> /dapub/mhm/plane-button
chmod 666 /dapub/mhm/plane-button
echo "创建完成,请重新输入编号进入本模块"
read
continue
fi
#------------------------------------------------------------------------
#sz1=="1"的判断结束,plane-button模块
#------------------------------------------------------------------------
elif [ $sz1 == "2" ];then
clear
#echo '健身模块已进入'
if [ -f '/dapub/mhm/gym' ];then
while true
do
if [ $s1 == '-211' -o $s1 == '-212' ];then
#检测是否快捷键启动脚本
sz3=1
fi
gym11=$(cat /dapub/mhm/gym |awk '{print $8}'| grep -w "`date +%W `w" | wc -l)
gym12=$(cat /dapub/mhm/gym | grep -w "`date| awk '{print $2}'`" | wc -l)
gym24=$(cat /dapub/mhm/gym-2 |awk '{print $8}'| grep -w "`date +%W `w" | wc -l)
#半gym周计数
gym31=$(cat /dapub/mhm/gym-2 | grep -w "`date| awk '{print $2}'`" | wc -l)
#半gym月计数
gym25=$((gym24/2))
gym26=$((gym11+gym25)) #全gym周计数
gym32=$((gym31/2))
gym27=$((gym12+gym32)) #全gym月计数
#--------------------------
#获取时间戳,并计算记录中相差的值,结果是计算相差多少天,一天是86400秒
#plane0变量为获取是否是无记录文档,如是,则直接赋值为0,如不是才执行获取操作
#适用于gym模块
gym0=`tail -1 /dapub/mhm/gym | awk '{print $1}'`
if [ $gym0 == "0" ];then
time18=0
time16="无"
time14="记"
time15="录"
else
time10=`date | awk '{print $2}'` #获取今天月份数值
time11=`date | awk '{print $3}'` #获取今天日期数值
time12=`date | awk '{print $6}'` #获取今天年份的数值
time13=$(date +%s -d "$time10 $time11 $time12") #获取今天时间戳
time14=`tail -1 /dapub/mhm/gym | awk '{print $3}'` #获取上一次的数据月份数值
time15=`tail -1 /dapub/mhm/gym | awk '{print $4}'` #获取上一次的数据日期数值
time16=`tail -1 /dapub/mhm/gym | awk '{print $7}'` #获取上一次的数据年份的数值
time17=$(date +%s -d "$time14 $time15 $time16") #获取上一次的时间戳
time18=$(((time13-time17)/86400))
fi
#以上是获取计算时间相差脚本模块-适用于gym模块
#----------------------------------
echo '健身模块已进入'
echo -e "距离上次全gym记录天数为:\e[1;31m"$time18""天"\e[0m,上次记录日期:\e[1;31m"$time16-$time14-$time15 "\e[0m"
if [ $time18 -gt 2 ];then
echo -e '\e[1;31m间隔天数大于身体健康必须值,建议出现此条信息后于今天完成全gym操作\e[0m'
fi
echo "请输入相对应的管理编号,只能是数字"
echo "1.记录当前时间的gym记录 "
if [ $gym26 -gt 3 ];then
echo "2.查看本周全gym的记录(重要指数) 有效次数为:"$gym26
else
echo -e "\e[1;31m2.查看本周全gym的记录(重要指数) 有效次数为:"$gym26 "\e[1;5;31m ×--\e[0m" "\e[1;31m本周不达标\e[0m"
fi
echo "2-2.查看本周半gym的记录 次数为:"$gym24
if [ $gym27 -gt 12 ];then
echo "3.查看本月全gym的记录(重要指数) 有效次数为:"$gym27
else
echo -e "\e[1;31m3.查看本月全gym的记录(重要指数) 有效次数为:"$gym27 "\e[1;5;31m ×--\e[0m" "\e[1;31m本月不达标\e[0m"
fi
echo "3-2.查看本月半gym的记录 次数为:"$gym31
echo "4.查看指定月份的全gym的记录"
echo "5.查看全部全gym的记录"
echo "5-2.查看全部半gym的记录"
echo "6.返回上级菜单"
echo -e "\e[31m7.删除最近的一条gym的记录\e[0m"
echo -e "\e[1;34m#健身模块规则,可以记录全gym也可以记录半gym,有效次数+1的规则是记录1次全gym或者两次半gym,半gym不能按选定月份查看,最终影响效果也不大,后续不排除会删除此指数,所以不推荐半gym运动。每周的有效次数达到3次以上为达标状态,未达标时将在每天23点通过发送邮件提醒管理员。每月的有效次数达到12次以上为达标状态,未达标时将在每天23点通过邮件通知管理员。另外每周日和每月的最后一天的23点都会通过邮件发送健身模块简报给管理员。\e[0m"
if [ $s1 != '-211' -a $s1 != '-212' ];then
#检测是否快捷键启动脚本
read -p "请输入管理编号:" sz3
fi
if [ -z $sz3 ];then
clear
continue
elif [ $sz3 == "1" ];then
if [ $s1 == '-211' ];then
#检测是否快捷键启动脚本
gym3=1
fi
if [ $s1 == '-212' ];then
#检测是否快捷键启动脚本
gym3=2
fi
if [ $s1 != '-211' -a $s1 != '-212' ];then
#检测是否快捷键启动脚本
read -p "全gym请输入1,半gym请输入2,不确认请输入其他" gym3
fi
if [ $gym3 == "1" ];then
gym1=`tail -1 /dapub/mhm/gym | awk '{print $1}'`
if [ $gym1 == "0" ];then
echo "" > /dapub/mhm/gym
fi
gym2=`date`
gym1=$((gym1+1))
gym6=`date +%W`
echo $gym1 $gym2 $gym6"w"
echo $gym1 $gym2 $gym6"w">> /dapub/mhm/gym
sleep 2
if [ $s1 == '-211' ];then
clear
exit
fi
elif [ $gym3 == "2" ];then
gym21=`tail -1 /dapub/mhm/gym-2 | awk '{print $1}'`
if [ $gym21 == "0" ];then
echo "" > /dapub/mhm/gym-2
fi
gym22=`date`
gym21=$((gym21+1))
gym23=`date +%W`
echo $gym21 $gym22 $gym23"w"
echo $gym21 $gym22 $gym23"w">> /dapub/mhm/gym-2
sleep 2
if [ $s1 == '-212' ];then
clear
exit
fi
else
clear
continue
fi
elif [ $sz3 == "2" ];then
clear
echo -e "\e[1;31m"
cat /dapub/mhm/gym |grep -w "`date +%W `w"
gym5=$(cat /dapub/mhm/gym | awk '{print $8}'|grep -w "`date +%W `w" | wc -l)
echo ""
echo "本周全gym的次数为:" $gym5
echo -e "\e[0m"
read
clear
continue
elif [ $sz3 == "2-2" ];then
clear
echo -e "\e[1;31m"
cat /dapub/mhm/gym-2 |grep -w "`date +%W `w"
gym28=$(cat /dapub/mhm/gym-2 | awk '{print $8}'|grep -w "`date +%W `w" | wc -l)
echo ""
echo "本周半gym的次数为:" $gym28
echo -e "\e[0m"
read
clear
continue
elif [ $sz3 == "3" ];then
clear
echo -e "\e[1;31m"
cat /dapub/mhm/gym | grep -w "`date| awk '{print $2}'`"
gym5=$(cat /dapub/mhm/gym | grep -w "`date| awk '{print $2}'`" | wc -l)
echo ""
echo "本月全gym的次数为:" $gym5
echo -e "\e[0m"
read
clear
continue
elif [ $sz3 == "3-2" ];then
clear
echo -e "\e[1;31m"
cat /dapub/mhm/gym-2 | grep -w "`date| awk '{print $2}'`"
gym29=$(cat /dapub/mhm/gym-2 | grep -w "`date| awk '{print $2}'`" | wc -l)
echo ""
echo "本月半gym的次数为:" $gym29
echo -e "\e[0m"
read
clear
continue
elif [ $sz3 == "4" ];then
clear
read -p "years input(回车默认当前年):" gym7
if [ -z $gym7 ];then
gym7=$(date +%Y)
fi
echo "输入月份要求,请使用英文名"
echo "1月-Jan 2月-Feb 3月-Mar 4月-Apr 5月-May 6月-Jun"
echo "7月-Jul 8月-Aug 9月-Sep 10月-Oct 11月-Nov 12月-Dec"
read -p "Month input(回车默认当前月):" gym8
if [ -z $gym8 ];then
gym8=`date | awk '{print $2}'`
fi
echo "正在查找" $gym7"-"$gym8"的gym数据记录"
echo -e "\e[1;31m"
cat /dapub/mhm/gym | grep "$gym7"| grep "$gym8"
gym9=$(cat /dapub/mhm/gym | grep "$gym7"| grep "$gym8" | wc -l)
echo ""
echo "查询的"$gym7"-"$gym8"的gym次数为:" $gym9
echo -e "\e[0m"
read
clear
continue
elif [ $sz3 == "5" ];then
clear
echo -e "\e[1;31m"
cat /dapub/mhm/gym
gym10=$(cat /dapub/mhm/gym | wc -l)
gym10=$((gym10-1))
echo ""
echo "所有记录的全gym次数为:" $gym10
echo -e "\e[0m"
read
clear
continue
elif [ $sz3 == "5-2" ];then
clear
echo -e "\e[1;31m"
cat /dapub/mhm/gym-2
gym30=$(cat /dapub/mhm/gym-2 | wc -l)
gym30=$((gym30-1))
echo ""
echo "所有记录的半gym次数为:" $gym30
echo -e "\e[0m"
read
clear
continue
elif [ $sz3 == "6" ];then
break
elif [ $sz3 == "7" ];then
clear
echo -e "\e[1;31m请确认是否需要删除,删除全gym记录请按1,删除半gym记录请按2,否则按其他选项或直接回车\e[0m"
read gym13
if [ $gym13 == "1" ];then
gym14=`cat /dapub/mhm/gym | wc -l`
if [ $gym14 -lt 2 ];then
echo "已没有记录可以删除"
sleep 2
clear
continue
fi
#echo -e "\e[1;31m已删除最后一行的gym记录!!\e[0m"
sed -i ${gym14}d /dapub/mhm/gym
echo -e "\e[1;31m已删除最后一行的全gym记录!!\e[0m"
sleep 2
elif [ $gym13 == "2" ];then
gym27=`cat /dapub/mhm/gym-2 | wc -l`
if [ $gym27 -lt 2 ];then
echo "已没有记录可以删除"
sleep 2
clear
continue
fi
sed -i ${gym27}d /dapub/mhm/gym-2
echo -e "\e[1;31m已删除最后一行的半gym记录!!
\e[0m"
sleep 2
elif [ -z $gym13 ];then
clear
continue
else
clear
continue
fi
clear
continue
fi
clear
continue
done
#sleep 1
else
echo '健身模块已进入'
echo "正在创建相应模块文件,请稍后"
echo "0" >> /dapub/mhm/gym
chmod 666 /dapub/mhm/gym
if [ -f "/dapub/mhm/gym-2" ];then
echo "部分文件已存在"
else
echo "0" >> /dapub/mhm/gym-2
chmod 666 /dapub/mhm/gym-2
fi
echo "创建完成,请重新输入编号进入本模块"
read
continue
fi
#------------------------------------------------------------------------
#sz1=="2"的判断结束,gym模块
#------------------------------------------------------------------------
elif [ $sz1 == "3" ];then
clear
#-------------------------静默初始化-创建记录每天食物的记录文件
if [ ! -f '/dapub/mhm/FCJH' ];then
touch /dapub/mhm/FCJH
chmod 666 /dapub/mhm/FCJH
fi
#--------------------------静默初始化结束
#echo '食物管理模块已进入'
if [ -f '/dapub/mhm/Food-Calories.txt' ];then
while true
do
#获取时间戳,并计算记录中相差的值,结果是计算相差多少天,一天是86400秒
#plane0变量为获取是否是无记录文档,如是,则直接赋值为0,如不是才执行获取操作
#适用于gym模块和食物管理模块
fcjh0=`tail -1 /dapub/mhm/FCJH | awk '{print $1}'`
foodcalonesnum=1944
weekfoodcalonesnum=$((foodcalonesnum*7))
#weekfoodcalonenum=11111
if [ -z $fcjh0 ];then
time18=0
time16="无"
time14="记"
time15="录"
gym26="无记录"
gym27="无记录"
foodWeekCalories="本周无记录"
#echo '111'
else
#------------------------------获取食物记录文件的记录值
gym26="有记录"
gym27="有记录"
cat /dapub/mhm/FCJH |grep -w "`date +%d `"d"" | sed 's/^.*--> //' > /dapub/mhm/.food-cache1
#chmod 766 /dapub/mhm/.food-cache1 > /dev/null
foodDayCaloriesCount=$(cat /dapub/mhm/.food-cache1 |wc -l)
if [ $foodDayCaloriesCount == "0" ];then
foodDayCalories="今日无记录"
else
foodDayCalories=0
fi
#if [ `cat /dapub/mhm/.food-cache1 |wc -l` == "0" ];then
# echo "今日无记录,请记录后在来查询"
# #sleep 2
# #clear
# #continue
#fi
while [ $foodDayCaloriesCount -gt 0 ]
do
foodDayCalories=$((foodDayCalories+`cat /dapub/mhm/.food-cache1|sed -n ''$foodDayCaloriesCount'p'|awk '{print $4}'`))
foodDayCaloriesCount=$((foodDayCaloriesCount-1))
done
cat /dapub/mhm/FCJH |grep -w "`date +%W `w" | sed 's/^.*--> //' > /dapub/mhm/.food-cache1
#chmod 766 /dapub/mhm/.food-cache1 > /dev/null
foodWeekCaloriesCount=$(cat /dapub/mhm/.food-cache1 |wc -l)
if [ $foodWeekCaloriesCount == "0" ];then
foodWeekCalories="本周无记录"
else
foodWeekCalories=0
fi
while [ $foodWeekCaloriesCount -gt 0 ]
do
foodWeekCalories=$((foodWeekCalories+`cat /dapub/mhm/.food-cache1|sed -n ''$foodWeekCaloriesCount'p'|awk '{print $4}'`))
foodWeekCaloriesCount=$((foodWeekCaloriesCount-1))
done
#------------------------------获取食物记录文件的记录值END
time10=`date | awk '{print $2}'` #获取今天月份数值
time11=`date | awk '{print $3}'` #获取今天日期数值
time12=`date | awk '{print $6}'` #获取今天年份的数值
time13=$(date +%s -d "$time10 $time11 $time12") #获取今天时间戳
time14=`tail -1 /dapub/mhm/FCJH | awk '{print $3}'` #获取上一次的数据月份数值
time15=`tail -1 /dapub/mhm/FCJH | awk '{print $4}'` #获取上一次的数据日期数值
time16=`tail -1 /dapub/mhm/FCJH | awk '{print $7}'` #获取上一次的数据年份的数值
time17=$(date +%s -d "$time14 $time15 $time16") #获取上一次的时间戳
time18=$(((time13-time17)/86400))
fi
#以上是获取计算时间相差脚本模块-也适用于食物管理模块
#----------------------------------
echo -e "\e[1;31m食物管理模块已进入,已链接离线食物热量库/dapub/mhm/Food-Calories.txt\e[0m"
echo -e "\e[1;31m注意:现阶段此模块在不同用户间使用可能会出现无权限的报错,暂时请使用damain用户使用\e[0m"
echo -e "距离上次食物热量摄入记录天数为:\e[1;31m"$time18""天"\e[0m,上次记录日期:\e[1;31m"$time16-$time14-$time15 "\e[0m"
if [ $time18 -gt 0 ];then
echo -e '\e[1;31m间隔天数大于记录设定值,建议出现此条信息后于今天完成食物热量摄入记录\e[0m'
fi
echo "请输入相对应的管理编号,只能是数字"
echo "1.记录今天的食物热量摄入记录 "
if [ $gym26 == "无记录" ];then
echo -e "2.查看今天食物热量摄入记录(重要指数)"
echo -e "建议一日食物热量摄入总值:\e[1;31m $foodcalonesnum Kcal\e[0m,本日食物热量摄入记录总值:\e[1;31m无记录 \e[0mKcal"
#elif [ $foodDayCaloriesCount == "0" ];then
# echo -e "2.查看今天食物热量摄入记录(重要指数)"
# echo -e "建议一日食物热量摄入总值:\e[1;31m $foodcalonesnum Kcal\e[0m,本日食物热量摄入记录总值:"$foodDayCalories "Kcal"
elif [ $foodDayCalories -lt $foodcalonesnum ];then
echo -e "2.查看今天食物热量摄入记录(重要指数)"
echo -e "建议一日食物热量摄入总值:\e[1;31m $foodcalonesnum Kcal\e[0m,本日食物热量摄入记录总值:\e[1;31m"$foodDayCalories "\e[0m Kcal \e[1;5;32m √--\e[0m\e[1;32m本日摄入食物热量正常,请保持\e[0m"
else
echo -e "2.查看今天食物热量摄入记录(重要指数)"
echo -e "建议一日食物热量摄入总值:\e[1;31m $foodcalonesnum Kcal\e[0m,本日食物热量摄入记录总值:\e[1;31m"$foodDayCalories "\e[0m Kcal\e[1;5;31m ×--\e[0m" "\e[1;31m本日摄入食物热量已超标\e[0m"
fi
echo -e "3.查看本周食物热量摄入记录"
echo -e "建议一周食物热量摄入总值:\e[1;31m $weekfoodcalonesnum Kcal\e[0m,本周食物热量摄入记录总值:\e[1;31m"$foodWeekCalories "\e[0m Kcal"
echo "4.查看本月食物热量摄入记录"
echo "5.查看指定月份的食物热量摄入记录"
echo "6.查看全部的食物热量摄入记录"
echo "7.返回上级菜单"
echo -e "\e[31m8.删除最后一条摄入食物热量的记录\e[0m"
#echo -e "\e[1;34m#健身模块规则,可以记录全gym也可以记录半gym,有效次数+1的规则是记录1次全gym或者两次半gym,半gym不能按选定月份查看,最终影响效果也不大,后续不排除会删除此指数,所以不推荐半gym运动。每周的有效次数达到3次以上为达标状态,未达标时将在每天23点通过发送邮件提醒管理员。每月的有效次数达到12次以上为达标状态,未达标时将在每天23点通过邮件通知管理员。另外每周日和每月的最后一天的23点都会通过邮件发送健身模块简报给管理员。\e[0m"
echo -e "\e[1;34m#暂无邮件发送提醒功能!\e[0m"
read -p "请输入管理编号:" sz4
if [ -z $sz4 ];then
clear
continue
elif [ $sz4 == "1" ];then
clear
read -p "请输入记录的食物名称,直接按回车则显示全部离线食物记录:" foodName
cat /dapub/mhm/Food-Calories.txt | grep "$foodName" | cat -n > /dapub/mhm/food-cache
#-----------------------------记录进离线食物库的代码块
if [ `cat /dapub/mhm/food-cache|wc -l` == "0" ];then
echo -e "\e[1;31m食物离线库不存在此食物,是否记录此食物进离线食物库\e[0m"
read -p "记录请输入1,不记录请输入其他" inputFoodCalories
if [ -z $inputFoodCalories ];then
clear
continue
elif [ $inputFoodCalories == "1" ];then
clear
echo "需要记录的食物名称为:"$foodName
echo "请输入"$foodName"的默认分量(可以输入任意字符,看得懂即可)"
read FS
if [ -z $FS ];then
echo "无效输入,输入为空"
sleep 2
clear
continue
fi
echo "请输入"$foodName"的默认分量热量值(只能输入数字!)"
read calories
if [ -z $calories ];then
echo "无效输入,输入为空"
sleep 2
clear
continue
fi
clear
echo "请确认以下内容是否正确"
echo -e "食物名称为:\e[1;31m"$foodName"\e[0m 默认分量为:\e[1;31m"$FS"\e[0m 热量值为:\e[1;31m"$calories"\e[0m Kcal"
read -p "确认请输入1,不确认请输入其他" checkInputFoodCalories
if [ -z $checkInputFoodCalories ];then
clear
continue
elif [ $checkInputFoodCalories == "1" ];then
clear
echo $foodName" "$FS" "$calories" Kcal" >> /dapub/mhm/Food-Calories.txt
echo $foodName" "$FS" "$calories" Kcal"
echo "已记录"
sleep 2
clear
continue
else
clear
continue
fi
fi
fi
#-----------------------------记录进离线食物库的代码块END
clear
cat /dapub/mhm/food-cache
echo "请输入符合食物记录的序号,仅支持整数,如不存在食物记录,则输入n"
read foodNum
foodNumCheck=` cat /dapub/mhm/food-cache| wc -l`
if [ -z $foodNum ];then
clear
echo -e "\e[1;31m无效选项\e[0m"
sleep 2
clear
continue
elif [ $foodNum == "n" ];then
clear
read -p "请输入要记录的食物名称为:" foodName
if [ -z $foodName ];then
echo "无效输入,输入为空"
sleep 2
clear
continue
fi
echo "请输入"$foodName"的默认分量(可以输入任意字符,看得懂即可)"
read FS
if [ -z $FS ];then
echo "无效输入,输入为空"
sleep 2
clear
continue
fi
echo "请输入"$foodName"的默认分量热量值(只能输入数字!)"
read calories
if [ -z $calories ];then
echo "无效输入,输入为空"
sleep 2
clear
continue
fi
clear
echo "请确认以下内容是否正确"
echo -e "食物名称为:\e[1;31m"$foodName"\e[0m 默认分量为:\e[1;31m"$FS"\e[0m 热量值为:\e[1;31m"$calories"\e[0m Kcal"
read -p "确认请输入1,不确认请输入其他" checkInputFoodCalories
if [ -z $checkInputFoodCalories ];then
clear
continue
elif [ $checkInputFoodCalories == "1" ];then
clear
echo $foodName" "$FS" "$calories" Kcal" >> /dapub/mhm/Food-Calories.txt
echo $foodName" "$FS" "$calories" Kcal"
echo "已记录"
sleep 2
clear
continue
else
clear
continue
fi
elif [ $foodNum -gt $foodNumCheck ];then
clear
echo -e "\e[1;31m无效选项,序号超过最大界限\e[0m"
sleep 2
clear
continue
elif [ $foodNum -ge 0 ];then
cat /dapub/mhm/Food-Calories.txt | grep "$foodName" | cat -n | sed -n ''$foodNum'p' | awk '{print $2,$3,$4,$5}' > /dapub/mhm/food-cache
#chmod 766 /daub/mhm/food-cache > /dev/null
foodName=`cat /dapub/mhm/food-cache | awk "{print $1}"`
cat /dapub/mhm/food-cache
echo ""
read -p "请输入需要记录的食物份数,仅支持整数,默认回车则按照离线食物库默认的分量,取消记录输入n哦 " foodFSNum
if [ `echo "$foodFSNum" | grep "[a-zA-Z]"` ];then
echo "出现英文字母及数字字符,不规范,不予赋值"
sleep 2
clear
continue
fi
read -p "请输入食物备注,留空和填写不规范则按照时间判断当前时段记录:" foodBZ
if [ -z $foodBZ ];then
if [ `date +%H` -ge 5 -a `date +%H` -le 10 ];then
#if [ `date +%H` -ge 5 ];then
foodBZ="早餐"
elif [ `date +%H` -ge 11 -a `date +%H` -le 14 ];then
foodBZ="午餐"
elif [ `date +%H` -ge 15 -a `date +%H` -le 16 ];then
foodBZ="下午茶"
elif [ `date +%H` -ge 17 -a `date +%H` -le 21 ];then
foodBZ="晚餐"
elif [ `date +%H` -ge 22 -a `date +%H` -le 23 ];then
foodBZ="宵夜"
elif [ `date +%H` -ge 0 -a `date +%H` -le 4 ];then
foodBZ="宵夜"
fi
elif [ `echo "$foodBZ" | grep "[a-zA-Z]" || echo "$foodBZ" | grep "[0-9]"` ];then
echo "出现英文字母及数字字符,不规范,不予赋值"
if [ `date +%H` -ge 5 -a `date +%H` -le 10 ];then
foodBZ="早餐"
elif [ `date +%H` -ge 11 -a `date +%H` -le 14 ];then
foodBZ="午餐"
elif [ `date +%H` -ge 15 -a `date +%H` -le 16 ];then
foodBZ="下午茶"
elif [ `date +%H` -ge 17 -a `date +%H` -le 21 ];then
foodBZ="晚餐"
elif [ `date +%H` -ge 22 -a `date +%H` -le 23 ];then
foodBZ="宵夜"
elif [ `date +%H` -ge 0 -a `date +%H` -le 4 ];then
foodBZ="宵夜"
fi
fi
foodDate=`date`
foodDateDay=`date +%d`
#foodSort=$(((`cat /dapub/mhm/FCJH |wc -l`)+1))
foodWeek=`date +%W`
if [ -z $foodFSNum ];then
#echo $foodSort $foodDate $foodWeek"w ---> `cat /dapub/mhm/food-cache` ${foodBZ}"
echo "${foodBZ} ${foodDate} ${foodDateDay}"d" ${foodWeek}w ---> ${foodBZ} `cat /dapub/mhm/food-cache`"
echo "${foodBZ} ${foodDate} ${foodDateDay}"d" ${foodWeek}w ---> ${foodBZ} `cat /dapub/mhm/food-cache`" >> /dapub/mhm/FCJH
sleep 2
clear
continue
elif [ $foodFSNum == "n" ];then
clear
continue
elif [ $foodFSNum -ge 0 ];then
while [ $foodFSNum -gt 0 ]
do
#echo $foodBZ $foodDate $foodWeek"w ---> `cat /dapub/mhm/food-cache`"
#echo $foodBZ $foodDate $foodWeek"w ---> `cat /dapub/mhm/food-cache`" >> /dapub/mhm/FCJH
echo "${foodBZ} ${foodDate} ${foodDateDay}"d" ${foodWeek}w ---> ${foodBZ} `cat /dapub/mhm/food-cache`"
echo "${foodBZ} ${foodDate} ${foodDateDay}"d" ${foodWeek}w ---> ${foodBZ} `cat /dapub/mhm/food-cache`" >> /dapub/mhm/FCJH
foodFSNum=$((foodFSNum-1))
done
sleep 2
clear
continue
else
clear
echo -e "\e[1;31m无效记录,数值小于0 \e[0m"
sleep 2
continue
fi
#echo $foodKcal
else
clear
echo -e "\e[1;31m无效记录,数值小于0 \e[0m"
sleep 2
continue
fi
elif [ $sz4 == "2" ];then
clear
echo -e "\e[1;31m"
cat /dapub/mhm/FCJH |grep -w "`date +%d `"d"" | sed 's/^.*--> //' | cat -n
cat /dapub/mhm/FCJH |grep -w "`date +%d `"d"" | sed 's/^.*--> //' > /dapub/mhm/food-cache
#chmod 766 /dapub/mhm/food-cache > /dev/null
foodDayCaloriesCount=$(cat /dapub/mhm/food-cache |wc -l)
if [ `cat /dapub/mhm/food-cache |wc -l` == "0" ];then
echo "今日无记录,请记录后在来查询"
sleep 2
clear
continue
fi
foodDayCalories=0
while [ $foodDayCaloriesCount -gt 0 ]
do
foodDayCalories=$((foodDayCalories+`cat /dapub/mhm/food-cache|sed -n ''$foodDayCaloriesCount'p'|awk '{print $4}'`))
foodDayCaloriesCount=$((foodDayCaloriesCount-1))
done
echo ""
echo "今日记录食物摄入热量的次数为:" `cat /dapub/mhm/food-cache |wc -l` " 次"
echo "今日记录食物摄入热量总值为: "$foodDayCalories " Kcal"
echo "建议的每日食物摄入热量总值为:" $foodcalonesnum " Kcal"
if [ $foodDayCalories -le $foodcalonesnum ];then
echo -e "\e[1;34m摄入食物热量正常,请继续保持\e[0m"
else
echo -e "\e[1;5;31m摄入食物热量已超标,请注意,请尽量保持在建议值以下\e[0m"
fi
echo -e "\e[0m"
read
rm /dapub/mhm/food-cache
clear
continue
elif [ $sz4 == "3" ];then
clear
echo -e "\e[1;31m"
cat /dapub/mhm/FCJH |grep -w "`date +%W `w" | sed 's/^.*--> //' | cat -n
cat /dapub/mhm/FCJH |grep -w "`date +%W `w" | sed 's/^.*--> //' > /dapub/mhm/food-cache
#chmod 766 /dapub/mhm/food-cache > /dev/null
foodWeekCaloriesCount=$(cat /dapub/mhm/food-cache |wc -l)
if [ `cat /dapub/mhm/food-cache |wc -l` == "0" ];then
echo "本周无记录,请记录后在来查询"
sleep 2
clear
continue
fi
foodWeekCalories=0
while [ $foodWeekCaloriesCount -gt 0 ]
do
foodWeekCalories=$((foodWeekCalories+`cat /dapub/mhm/food-cache|sed -n ''$foodWeekCaloriesCount'p'|awk '{print $4}'`))
foodWeekCaloriesCount=$((foodWeekCaloriesCount-1))
done
echo ""
echo "本周记录食物摄入热量的次数为:" `cat /dapub/mhm/food-cache |wc -l` " 次"
echo "本周记录食物摄入热量总值为: "$foodWeekCalories " Kcal"
echo "建议的每日食物摄入热量总值为:" $weekfoodcalonesnum " Kcal"
if [ $foodWeekCalories -le $weekfoodcalonesnum ];then
echo -e "\e[1;34m摄入食物热量正常,请继续保持\e[0m"
else
echo -e "\e[1;5;31m摄入食物热量已超标,请注意,请尽量保持在建议值以下\e[0m"
fi
echo -e "\e[0m"
read
rm /dapub/mhm/food-cache
clear
continue
elif [ $sz4 == "4" ];then
clear
echo -e "\e[1;31m"
cat /dapub/mhm/FCJH |grep -w "`date +%b `" | cat -n
gym5=$(cat /dapub/mhm/FCJH | grep -w "`date +%b`" | wc -l)
echo ""
echo "本月摄入食物热量的记录次数为:" $gym5
echo "注:因一个月的热量总值没有太大参考意义,故没有显示,请按照每天正常值摄入"
echo -e "\e[0m"
read
clear
continue
elif [ $sz4 == "5" ];then
clear
read -p "years input(回车默认当前年):" gym7
if [ -z $gym7 ];then
gym7=$(date +%Y)
fi
echo "输入月份要求,请使用英文名"
echo "1月-Jan 2月-Feb 3月-Mar 4月-Apr 5月-May 6月-Jun"
echo "7月-Jul 8月-Aug 9月-Sep 10月-Oct 11月-Nov 12月-Dec"
read -p "Month input(回车默认当前月):" gym8
if [ -z $gym8 ];then
gym8=`date | awk '{print $2}'`
fi
echo "正在查找" $gym7"-"$gym8"摄入食物热量的记录"
echo -e "\e[1;31m"
cat /dapub/mhm/FCJH | grep "$gym7"| grep "$gym8" | cat -n
gym9=$(cat /dapub/mhm/FCJH | grep "$gym7"| grep "$gym8" | wc -l)
echo ""
echo "查询的"$gym7"-"$gym8"摄入食物热量的记录次数为:" $gym9
echo -e "\e[0m"
read
clear
continue
elif [ $sz4 == "6" ];then
clear
echo -e "\e[1;31m"
cat -n /dapub/mhm/FCJH
gym10=$(cat /dapub/mhm/FCJH | wc -l)
#gym10=$((gym10-1))
echo ""
echo "所有存档的食物摄入记录总记录数为:" $gym10
echo -e "\e[0m"
read
clear
continue
elif [ $sz4 == "7" ];then
break
elif [ $sz4 == "8" ];then
clear
echo -e "\e[1;31m请确认是否需要删除,确认删除最近一条记录请按1,否则按其他选项或直接回车\e[0m"
read gym13
if [ $gym13 == "1" ];then
gym14=`cat /dapub/mhm/FCJH | wc -l`
if [ $gym14 -lt 1 ];then
echo "已没有记录可以删除"
sleep 2
clear
continue
fi
#echo -e "\e[1;31m已删除最后一行的gym记录!!\e[0m"
sed -i ${gym14}d /dapub/mhm/FCJH
echo -e "\e[1;31m已删除最近一条的食物摄入热量记录!!\e[0m"
sleep 2
elif [ -z $gym13 ];then
clear
continue
else
clear
continue
fi
clear
continue
fi
clear
continue
done
#sleep 1
else
echo -e "\e[1;31m可用的离线食物链接文件不存在"
echo -e "请将可读取的食物链接文件存放至/dapub/mhm/路径下,且重命名为Food-Calories.txt"
echo -e "注意格式,必须是食物名称 量词 热量数值 Kcal"
echo -e "请重试后在进入此模块\e[0m"
read
continue
fi
#------------------------------------------------------------------------
#sz1=="3"的判断结束,食物管理模块
#------------------------------------------------------------------------
elif [ $sz1 == '4' ];then
data1=`cat /dapub/mhm/data | wc -l`
if [ $data1 == '1' ];then
clear
echo '模块数据初始化中,请稍等。。。'
echo '1-' > /dapub/mhm/data
echo '2-' >> /dapub/mhm/data
echo '3-' >> /dapub/mhm/data
echo '模块数据初始化已完成,请重新进入此模块'
sleep 2
continue
else
while true
do
clear
data2=`sed -n '1p' /dapub/mhm/data`
echo '程序常规变量设置菜单'
echo '1.邮件收件人,现变量为:'$data2
echo '2.返回上级菜单'
read -p '请选择设置选项 ' data3
if [ -z $data3 ];then
continue
elif [ $data3 == '1' ];then
clear
echo '设置邮件收件人,现变量为:'$data2
read -p '请设置新的邮件发送人变量,将在下次发送邮件生效,按回车默认不变,多个收件人用英文逗号隔开:' data4
echo $data4 | grep '@'
data5=`echo $?`
#检测是否符合输入要求,不是则返回不成功码,不等于0
if [ -z $data4 ];then
continue
elif [ $data5 -lt 1 ];then #只有小于1才能更改
sed -i 's/'$data2'/'$data4'/' /dapub/mhm/data
echo '邮件收件人已更改为:'$data4
sleep 2
continue
else
echo '邮件填写格式不符合规范,不予更改'
sleep 2
continue
fi
elif [ $data3 == '2' ];then
break
fi
continue
done
fi
#------------------------------------------------------------------------
#sz1=="4"的判断结束,程序常规变量设置模块
#------------------------------------------------------------------------
elif [ $sz1 == "5" ];then
echo "Good bye~"
sleep 2
clear
exit
#------------------------------------------------------------------------
#sz1=="5"的判断结束,程序退出模块
#------------------------------------------------------------------------
elif [ $sz1 == "6" ];then
clear
echo -e '\e[1;34m'
echo '#脚本指引:'
echo '1.默认不填位置参数则直接运行脚本程序'
echo '2.位置参数为"-11y"时,则快捷运行plane-button模块计数一次'
echo '3.位置参数为"-211"时,则快捷运行gym模块全gym计数一次'
echo '4.位置参数为"-212"时,则快捷运行gym模块半gym计数一次'
echo '5.脚本的按键输入需要按回车才能开始执行操作'
echo ''
echo '#脚本更新情况:'
echo 'ver 1.0-----------'
echo '1.建立plane-button模块'
echo ''
echo 'ver 1.1-----------'
echo '1.添加gym模块'
echo ''
echo 'ver 1.2-----------'
echo '1.添加plane-button模块和gym模块中的记录间隔天数。'
echo '2.添加脚本plane-button模块、gym模块快捷记录模式'
echo '3.添加脚本指引和脚本更新情况'
echo ''
echo 'ver1.3------------'
echo '1.添加脚本常规变量模块'
echo ""
echo 'ver1.4------------'
echo '1.添加食物摄入热量管理模块(大框架已完成)'
echo '后续添加插入不同时间的摄入食物热量记录功能及查询到的记录删除功能'
echo '后续将在脚本常规变量设置食物离线库路径及默认单日最高建议热量值'
echo '注意:现阶段此模块在不同用户间使用可能会出现无权限的报错,暂时请使用damain用户使用'
echo -e '\e[0m'
read
continue
#------------------------------------------------------------------------
#sz1=="6"的判断结束,程序指引
#------------------------------------------------------------------------
else
echo "编号输入错误,请按回车重试"
read
continue
fi
done
sleep 1
else #程序初始化else语句
echo "程序初始化中,请稍后"
mkdir /dapub/mhm
chmod 777 /dapub/mhm
if [ -e '/dapub/mhm/data' ];then #检测程序的data数据文件是否存在,没有则创建
echo "程序已完成基础设置,请重新启动程序"
else
touch /dapub/mhm/data
echo " " > /dapub/mhm/data
chmod 666 /dapub/mhm/data
echo "程序已完成基础设置,请重新启动程序"
fi
fi #程序初始化结束语句
|