#!/bin/bash # setdate--Friendly frontend to the date command # Date wants: [[[[[cc]yy]mm]dd]hh]mm[.ss] # To make things user-friendly, this function prompts for a specific date # value, displaying the default in [] based on the current date and time. source ../1/library.sh # source our library of bash functions to get echon() proc askvalue { # $1 = field name, $2 = default value, $3 = max value, # $4 = required char/digit length echon "$1 [$2] : " read answer if test $(answer:=$2) -gt $3 { echo "$0: $1 $answer is invalid"; exit 0 } elif test "$shExpr(' $(echo $answer | wc -c) - 1 ')" -lt $4 { echo "$0: $1 $answer is too short: please specify $4 digits"; exit 0 } eval $1=$answer # Reload the given variable with the specified value. } eval $[date "+nyear=%Y nmon=%m nday=%d nhr=%H nmin=%M] askvalue year $nyear 3000 4 askvalue month $nmon 12 2 askvalue day $nday 31 2 askvalue hour $nhr 24 2 askvalue minute $nmin 59 2 #squished="$year$month$day$hour$minute" # Or, if you're running a Linux system: setglobal squished = ""$month$day$hour$minute$year"" # Yes, they use different formats, Linux and OS X/BSD systems. Helpful, eh? echo "Setting date to $squished. You might need to enter your sudo password:" sudo date $squished exit 0