繁体   English   中英

用BC bash计算天数

[英]Calculating days with BC bash

因此,我的脚本必须计算某人下班回来的日期。 用于使用用户输入的出发日和行程时间进行计算。 每天都有一定的数量,例如Monday-1; Tuesday-2等,但是当星期日的用户输入必须为0时,它将变得复杂。

我所做的脚本atm:

#!/bin/bash
#Data
echo -e "\e[00;31mRemember!\e[00m Sunday-0; Monday-1; Tuesday-2; Wednesday-3; Thursday-4; Friday-5; Saturday-6;"
echo
echo -n "What day will you leave? "
read left
echo -n "How long is your trip? "
read days
#Calculating
cb=`echo "$left+$days" | bc`
comeback=`echo "$cb % 6" | bc`
#Output
if [ $comeback = 0 ]; then
echo "You will be back at Sunday"
fi
if [ $comeback = 1 ]; then
echo "You will be back at Monday"
fi
if [ $comeback = 2 ]; then
echo "You will be back at Tuesday"
fi
if [ $comeback = 3 ]; then
echo "You will be back at Wednesday"
fi
if [ $comeback = 4 ]; then
echo "You will be back at Thursday"
fi
if [ $comeback = 5 ]; then
echo "You will be back at Friday"
fi
if [ $comeback = 6 ]; then
echo "You will be back at Saturday"
fi

我的问题是,当旅行超过一周或何时应该在星期日结束时,它永远无法正确计算。 当我像星期日1一样开始计数时,我的脚本开始工作了。 星期一2等,但星期日必须为0。

要更正您的脚本:

comeback=$(echo "(${left} + ${days}) % 7" | bc)

另外,您应该使用数组进行输出:

days_of_week=( Sunday Monday Tuesday Wednesday Thursday Friday Saturday )
echo "You will be back on ${days_of_week[${comeback}]}"

我也想指出一个有趣的答案。 使用来自GNU coreutils的date ,您可以在阅读$left$days

echo "You will be back on $(date -d "${days_of_week[${left}]} + ${days} days" +%A)"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM