会話コマンドとカレンダーを使用して、生年月日と現在の日付を選択するために生きている日付を変換します。
ヒント:
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