Я нашел способ проверить с помощью оператора if
, что ввод соответствует шаблону даты и не является эксцентрической датой .
Соответственно:
if [[ $dateinput =~ ^[0-9]{4}-[0-9]{2}-[0-9]{2}$ ]]
date -d "$dateinput"
И они работают.
Я пытался применить его как можно в цикле while как:
dateinput="1992-01-01" #voluntarily made in order to see if the while statement is ok
while [ ! date -d "$dateinput" ]; do
read -p "Indicate a date please: " Date
dateinput=$Date
done
В результате он отображает текст приглашения Indicate a date please:
, затем отображает script.sh: line 73: [[! : command not found
, где строка 73: while [ ! date -d "$dateinput" ]; do
. Кроме того, переменная dateinput
не существует никогда после нее, потому что она не будет отображать echo "the input date is: ${dateinput}"
, но продолжает читать и отображать остальные строки скрипта.
Что я могу сделать, чтобы выполнить ее?
bash версия: 4.4.20 |Версия ОС: Ubuntu 18.04.3 LTS.