두 날짜의 달력이 다릅니다.

두 날짜의 달력이 다릅니다.

대화 명령과 달력을 사용하여 생년월일과 현재 날짜를 선택하도록 살아있는 날짜를 변환하세요.

힌트:

dialog --stdout --title "Today" --calendar "today" 0 0 0 0 0 | awk -F/ '{ print $2"/"$1"/"$3 }'

또한 당신이 살아 있었다는 것을 추가하십시오

#!/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

"지금"과 "대화상자"를 통해 사용자로부터 검색된 날짜 사이의 일수를 계산하는 방법에 대한 일반적인 아이디어는 정확하지만 스크립트에는 인용 불일치, 명령 생략, 오류 등 버그와 오류가 많이 있습니다. 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

관련 정보