📜  在 Word 中显示时间的 Shell 脚本

📅  最后修改于: 2022-05-13 01:57:27.799000             🧑  作者: Mango

在 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”、

  1. 一些基本的 shell 脚本,通过这个,按照以下步骤编写脚本代码。
  2. 获取所有时间组件,如不同变量中的小时、分钟和秒。
  3. 创建一个字符串数组,在一个单词中包含从 0 到 19 的数字,并使用数组索引使用这个单词。
  4. 创建另一个字符串数组,其中将包含 word 中的 0、10、20、30、40、50、60 等值。
  5. 现在,使用 if-else 语句将 24 小时格式更改为 12 小时格式。
  6. 创建一个函数,该函数接受一个整数参数并在 word 中返回该整数(这里的数字最多可以是 2 位数字,因为及时只有最多 2 位数字的数字)。
  7. 现在,转换单词中的所有时间分量并使用“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

输出:

在 Word 中显示时间