#!/bin/bash #change time using hwclock and date -s clear echo -e -n "Please enter the date and time you wish to set\n" echo -e -n "You need to set the time according to the UTC/GMT timezone please check https://time.is/UTC\n\n" get_date () { echo -e -n "Please insert $1 (between $2-$3) (Enter key to accept $2)\n" read -n $4 value echo -e "\n" #if enter if [[ $value = "" ]]; then value=$2 fi #must be a $4 digits number between $2 and $3 while [[ ! $value =~ ^[0-9]{$4} ]] || [[ ${value#0} -lt $2 ]] || [[ ${value#0} -gt $3 ]]; do echo -e -n "$1 is wrong: you entered "$value". Please try again, it must be $4 digits number between $2 and $3 (press Enter to accept $2) \n" read -n $4 value echo -e "\n" if [[ $value = "" ]]; then value=$2 fi done } get_date "year" "2024" "2200" "4" year=$value get_date "month" "01" "12" "2" month=$value get_date "day" "01" "31" "2" day=$value get_date "hour" "00" "23" "2" hour=$value get_date "minute" "00" "59" "2" min=$value get_date "second" "00" "59" "2" sec=$value ##getting the output of date -s OUTPUT=$(date -s "$year-$month-$day $hour:$min:$sec" 2>&1) ##if output is starting with the letter d which is the beginning of the error message then we do the script again if [[ ${OUTPUT} == d* ]]; then echo "The date is not correct, press any key to try again" echo -e "\n" read -n 1 nothing clear change-time else hwclock -w echo -e "The system date has been sucessfully set to $year-$month-$day $hour:$min:$sec" echo -e "\n" echo -e "Press any key to return to the menu" echo -e "\n" read -n 1 nothing fi