대화 명령과 달력을 사용하여 생년월일과 현재 날짜를 선택하도록 살아있는 날짜를 변환하세요.
힌트:
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