両方の日付のカレンダーが異なります。

両方の日付のカレンダーが異なります。

会話コマンドとカレンダーを使用して、生年月日と現在の日付を選択するために生きている日付を変換します。

ヒント:

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

おすすめ記事