calendário diferente entre 2 datas [duplicado]

0

Converta seus dias vivos para usar o comando de diálogo e um calendário para data de nascimento e data atual

Dica:

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

Adicione também Você esteve vivo X anos (s) Y dias (s) hora (s) de Z minuto (s) segundo (s) isso é o que eu tenho, mas eu continuo recebendo erros de ler a data do diálogo (Data introduzida:. ^ [[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
    
por Alaa Ismael Al 27.09.2018 / 08:55

1 resposta

0

A idéia geral de como calcular o número de dias entre 'agora' e uma data recuperada do usuário por 'diálogo' está correta, mas o script tem muitos erros e erros como citações não correspondidas, comandos omitidos,% maiúsculasS onde deveria estar em minúscula s e assim por diante.

De qualquer forma, aqui está o script com erros corrigidos:

#!/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
    
por 27.09.2018 / 11:19