在 Word 中显示时间的 Shell 脚本
Linux/Unix 具有显示当前时间的内置功能。通常,Linux 以一般格式而不是单词显示当前时间,因此可能有些用户不同意。
因此,为了以更好更漂亮的格式显示当前时间,这里给出了一个 bash 脚本。它以 12 小时格式显示当前时间,将采用文字样式而不是一般格式。
如果我们在 Linux 或 Unix 中直接运行 time 命令,则会得到如下输出
Command: date +%r
Output: 11:02:08 PM IST
我们的任务是在 Word 中显示时间:
例子:
Current Time is : 02:03:25 AM IST
Time in Word is : Two hour Three minutes Twenty-Five second AM
脚本代码方法:要编写显示世界时间的脚本,我们需要一些简单的 Linux 内置命令,如“date”、“echo”、
- 一些基本的 shell 脚本,通过这个,按照以下步骤编写脚本代码。
- 获取所有时间组件,如不同变量中的小时、分钟和秒。
- 创建一个字符串数组,在一个单词中包含从 0 到 19 的数字,并使用数组索引使用这个单词。
- 创建另一个字符串数组,其中将包含 word 中的 0、10、20、30、40、50、60 等值。
- 现在,使用 if-else 语句将 24 小时格式更改为 12 小时格式。
- 创建一个函数,该函数接受一个整数参数并在 word 中返回该整数(这里的数字最多可以是 2 位数字,因为及时只有最多 2 位数字的数字)。
- 现在,转换单词中的所有时间分量并使用“echo”命令打印整个时间字符串。
脚本代码:
# ## bash script to display Time in word
# print current time in original function format of Linux/Unix
echo "Current Time is : " `date +%r`
echo
# getting hour, minut and seconds value in separate as integer
hour=`date +%-H`
minut=`date +%-M`
seconds=`date +%-S`
post='AM'
# create array of strings two show time in word
time=(Zero One Two Three Four Five Six Seven Eight Nine
Ten Eleven Twelve Thirteen Fourteen Fifteen
Sixteen Seventeen Eighteen Nineteen)
time_ten=(Zero Ten Twenty Thirty Forty Fifty Sixty)
# check hour is greator than "12" or not
# if it than use 12-hour format to show the current time
if [[ $hour -gt 11 ]]
then
let "hour -= 12"
post="PM"
fi
# check if hour is 00 then print 12AM
if [[ $hour -eq 0 ]]
then
let "hour = 12"
fi
# Function for get current hour,minut and seconds in words
function getNumber(){
# check condition when time is less than 20 and get value directly from array
if [[ $1 -lt 20 ]]
then
timeInWord=${time[$1]}
else
# else block when time is greater than 20 ( minuts and seconds can be up to 59)
f=`expr $1 / 10`
s=`expr $1 % 10`
# check condition when first part of the time is zero than we don't have to print that value
if [[ $s -eq 0 ]]
then
timeInWord=${time_ten[$f]}
else
timeInWord="${time_ten[$f]}-${time[$s]}"
fi
fi
}
# make gloabal variable for timeInWord
timeInWord = "Geeks For Geeks"
# get hour in word
getNumber $hour
hourInWord=$timeInWord
# get minut in word
getNumber $minut
minutInWord=$timeInWord
# get seconds in word
getNumber $seconds
secondsInWord=$timeInWord
# print time in usual and simple word format in one line
echo "Time in Word is : $hourInWord hour $minutInWord minutes $secondsInWord second $post"
# END
输出: