转换您的活着的日子,以使用对话框命令和日历来选择出生日期和当前日期
暗示:
dialog --stdout --title "Today" --calendar "today" 0 0 0 0 0 | awk -F/ '{ print $2"/"$1"/"$3 }'
还添加你已经活着 X 年 Y 天 Z 小时 A 分钟 B 秒这就是我所拥有的,但我不断从对话框中读取日期时收到错误(输入日期: ^[[M#<6)
#!/bin/bash
#daysalive
#using hard coded date calc days between two days date
: ${DIALOG=dialog}
USERDATE=`$DIALOG --stdout --title "CALENDAR" --calendar "Please choose a date..." 0 0` | awk -F/ '{ print $2"/"$1"/"$3 }'
case $? in
0)
echo "Date entered: $USERDATE.";;
1)
echo "Cancel pressed.";;
255)
echo "Box closed.";;
esac
DOBDATE=$($USERDATE \+%S)
NOWDATE=$(date +%s)
echo -n "daysalive"
DAYSALIVE="$(($NOWDATE- $DOBDATE)" / 86400 )
echo $DAYSALIVE
答案1
如何计算“now”与通过“dialog”从用户检索到的日期之间的天数的总体思路是正确的,但脚本有很多错误和错误,例如不匹配的引号、省略的命令、应为大写的S
位置小写s
等等。
无论如何,这是已修复错误的脚本:
#!/bin/bash
#daysalive
: ${DIALOG=dialog}
USERDATE=$($DIALOG --stdout --title "CALENDAR" --calendar "Please choose a date..." 0 0 | awk -F/ '{ print $2"/"$1"/"$3 }')
case $? in
0)
echo "Date entered: $USERDATE.";;
1)
echo "Cancel pressed.";;
255)
echo "Box closed.";;
esac
DOBDATE=$(date --date $USERDATE +%s)
NOWDATE=$(date +%s)
echo -n "daysalive"
DAYSALIVE=$(( (NOWDATE - DOBDATE) / 86400 ))
echo $DAYSALIVE