shell 脚本执行日志怎么才能带有时间戳

shell 脚本执行日志怎么才能带有时间戳,第1张

封装一个写log的shell lib,定义如下函数

#!/bin/sh

function write_log()

{

local logType=$1

local logMsg=$2

local logName=$3

echo "$logType : `date +%Y-%m-%d\ %T` : $logMsg" >>$logName

}

# 按照如下方法调用,可以看到log.txt里面打印了日期啦

write_log FATAL "something error" log.txt

  在linux Shell中并没有毫秒级的时间单位,只有秒和纳秒。所以在shell中可以获取秒级时间戳,但是不能获取毫秒级时间戳。

  有时候确实需要毫秒级时间戳,于是使用秒和纳秒的时间戳来组合一下。通常我们看到的都是如下写法:

这个方法你快速地反复去执行,大概五六次就会出现一次报错 value too great for base 。

   date '+%N' 获取纳秒时获取的是一个字符串,而不是数字,且为了保证九位数,前面会补0,例如 073526864 。遇到首字母为0的字符串,shell正常的除法不能自动将其转换为数字(是的,虽然你看不到有数据类型,但是他是分数字和字符串类型的,并且使用的时候一般都隐含了类型转换,lua也有这个问题,被坑过无数次)。

  使用 expr命令 。

需要注意的是乘法符号 * 需要写成 \* ,不然无法识别为乘法符号。

${filename//./"$BKUP_DATE."}

改为:

${filename/.dat/$BKUP_DATE.dat}

连带着后缀名一起替换就不会有问题了。前提是,你的后缀名一定是dat


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/7873244.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-10
下一篇 2023-04-10

发表评论

登录后才能评论

评论列表(0条)

保存