Bash 日期格式化
Bash 日期
在 Bash 中,您可以使用date命令对系统的当前日期和时间值进行更改或其他操作。 语法:
$ date
注:当您不附带其他选项,单独使用date命令时,它只会执行打印系统当前的日期和时间值。
选项列表
您可以参考选项列表,选择选项与date命令一同使用以生成格式输出。
选项 | 作用 |
---|---|
-d | 用于显示以字符串设置的时间 |
-s | 用于设置以字符串设置的时间 |
-f | 用于处理多个日期 |
-i | 用于生成符合ISO 8601的日期、时间,以字符串输出 |
-r | 用于打印文件的最后修改日期 |
-u | 用于打印或设置世界标准时间 |
-help | 用于获取此命令的帮助 |
-version | 用于获取版本信息 |
您如果想要格式化日期,可以使用以下方法:
$ date '+<format-option-codes><format-option-codes> <format-option-codes>'
格式化选项列表
选项 | 日期指代 | 输出描述 | 输出示例 |
---|---|---|---|
+%a | 周一至周五 | 周的英文缩写(如,Mon ,Tue ,Wed ) | Mon |
+%A | 周一至周五 | 周的完整拼写(如,Monday ,Tuesday ,Wednesday ) | Monday |
+%b | 月份 | 月份的英文缩写(如,Jan ,Feb ,Mar ) | Jan |
+%B | 月份 | 月份的完整拼写(如,January ,February ,March ) | January |
+%d | 日 | 某个月的某一日(以数字类型输出) | 30 |
+%D | 日期 | 当前的日期(月/日/年) | 06/17/2020 |
+%F | 日期 | 当前的日期(年-月-日) | 2020-06-17 |
+%H | 时 | 小时值(24小时制,以数字类型输出) | 18 |
+%I | 时 | 小时值(12小时制,以数字类型输出) | 6 |
+%j | 日 | 某年的某一日(001-360,以数字类型输出) | 135 |
+%m | 月份 | 月份(01-12,以数字类型输出) | 06 |
+%M | 分 | 分钟值(00-59,以数字类型输出) | 55 |
+%N | 纳秒 | 纳秒值(000000000-999999999,以数字类型输出) | 123456789 |
+%S | 秒 | 秒钟值(00-59,以数字类型输出) | 49 |
+%T | 时间 | 当前的时间(时:分:秒) | 11:04:35 |
+%u | 周 | 当前周(01-07,起始周一,以数字类型输出) | 03 |
+%U | 周数 | 某年的某一周(00-53,起始周日,以数字类型输出) | 25 |
+%Y | 年 | 当前完整年份(以数字类型输出) | 2020 |
+%Z | 时区 | 时区缩写(如IST , GMT) | IST |
注:上表排序参照字母表。
示例
若您想获取 Month-Date-Year 的日期格式,可以使用命令选项组合date +%m-%d-%Y.
#!/bin/bash
mdy=`date +%m-%d-%Y`
echo "Date in format Month-Date-Year"
echo $mdy
您将会得到以下结果:
Date in format Month-Date-Year
06-17-2020
注:请参照格式化选线列表,严格区分格式选项字母大小写。
Bash 休眠
在 Bash 中 sleep 命令用于在指定的时间段内插入延迟或暂停执行(即休眠)。 当您处于特定目的需要延迟或暂停执行任何命令时,您就可以使用 sleep 命令了。
sleep 命令
语法:
sleep number[suffix]
注:
numeber 是时间值,可以使用正整数或小数。
suffix 是可选后缀(时间单位):
s -秒
m -分
h -时
d -天
如果没有后缀单位,默认秒为单位。
如果您传递了多个时间参数,总的睡眠时间将等于所有参数的和。
示例: 睡眠1天2小时3分30秒,如下:
sleep 1d 2h 3m 30s
Bash 脚本演示说明
在此,将演示默认单位为秒的情况下,使用sleep命令。
#!/bin/bash
# start time
date +"%H:%M:%S"
echo "Wait for 5 seconds"
sleep 5
# end time
date +"%H:%M:%S"
echo "Task Completed"
将得到以下结果:
12:01:43
Wait for 5 seconds
12:01:48
Task Completed
注:
执行流程
以 Hour:Minutes:Seconds 的格式打印输出休眠开始时间。
打印输出提示:Wait for 5 seconds 。
执行 sleep 命令,休眠5秒钟。
以 Hour:Minutes:Seconds 的格式打印输出休眠结束时间。
打印输出提示:Task Completed 。
Bash基本运算符
您可能希望通过脚本运算获得的结果是您想要的,那么您需要应用到算术运算符参与算术运算以获得您所需的结果。
算术运算符列表
在 Bash 中共支持11种算术运算符。
运算符 | 描述 | 运算示例 |
---|---|---|
+ | 加法 | $((5+3)) ,打印输出 8 |
- | 减法 | $((5-3)) ,打印输出 2 |
* | 乘法 | $((5*3)) ,打印输出 15 |
/ | 除法 | $((15/3)) ,打印输出 5 |
** | 求幂 | $((10**3)) ,打印输出 1000 |
% | 模 | $((10%3)) ,打印输出 1 |
+= | 常量递增变量,结果存储回变量 | x=5;let"x += 3";echo $x ,打印输出 8 |
-= | 常量递减变量,结果存储回变量 | x=5;let"x -= 3";echo $x ,打印输出 2 |
*= | 变量乘以常量,结果存储回变量 | x=5;let"x *= 3";echo $x ,打印输出 15 |
/= | 变量除以常量,结果存储回变量 | x=15;let"x /= 3";echo $x ,打印输出 5 |
%= | 变量除以常量的余数,结果存储回变量 | x=10;let"x *= 3";echo $x ,打印输出 1 |
关系运算符列表
运算符 | 描述 | 运算示例 |
---|---|---|
-eq | 检查两个数字是否相等 | 1 -eq 1 ,返回 true |
-ne | 检查两个数字是否不相等 | 1 -ne 2 ,返回 true |
-gt | 检查左边数是否大于右边数 | 2 -gt 1 ,返回 true |
-lt | 检查左边数是否小于右边数 | 1 -gt 2 ,返回 true |
-ge | 检查左边数是否大于等于右边数 | 2 -ge 1 ,返回 true |
-le | 检查左边数是否小于等于右边数 | 1 -le 2 ,返回 true |
逻辑运算符列表
运算符 | 描述 |
---|---|
&& | 逻辑为AND |
|| | 逻辑为OR |
Bash 算术运算
- 双括号的使用
基本语法:
((expression))
可采用四种大同小异的方法来实现所需的目标运算。
Num=$((5+3))
echo "Num = $Num"
((Num=5+3))
echo "Num = $Num"
Num1=5
Num2=3
((Num3=Num1+Num2))
echo "Num3 = $Num3"
Num1=5
Num2=3
Num3=((Num1+Num2))
echo "Num3 = $Num3"
以上四种方法结果均相同。
- 反引号的使用
反引号要与expr(通用表达式求值器)执行算术扩展。
`expr`在算术运算结束后不会将结果保存到变量中,而是直接将结果打印输出,如下示例:
#!/bin/bash
echo "Num1=5, Num2=3"
echo "Num3 is the value of addition Num3=Num1+Num2"
Num1=5
Num2=3
echo "Num3= `expr $Num1 + $Num2`"
执行后得到以下结果:
Num1=5,Num2=3
Num3 is the value of addition Num3=Num1+Num2
Num3= 8
- let 命令的构建
let 是 Bash 的内置命令,用于执行算术运算,算术运算完成后会将结果存储至变量中,语法为:
let <arithmetic expression>
示例:
#!/bin/bash
Num1=10
Num2=6
Num3=0
echo "W3Cschool"
let "Num3 = $(( Num1 + Num2 ))"
echo "Num3= $Num3"
执行后得到一下结果:
W3Cschool
Num3= 16