创建echo时间戳/不能在echo字符串中使用管道

时间:2012-02-06 10:04:25

标签: shell unix unix-timestamp

我想在脚本文件中使用时间戳来记录输出。

在控制台上

日期+%Y%m%d_%H%M%S_%N

打印类似“20120206_104531_944652200”

为了削减所有纳米和米克罗秒,我找到了

日期+%Y%m%d_%H%M%S_%N | sed s,“。\ {6 \} $”,,

给我一​​些像“20120206_104531_944”

在脚本文件中,它似乎有所不同。 每次记录输出完成时,都必须评估时间戳。

此脚本代码有效:

#!/usr/bin/bash
log_prefix1="date +%Y%m%d_%H%M%S_%N"

echo "`${log_prefix1}` blabla"
sleep 3
echo "`${log_prefix1}` blabla"

不幸的是,我没有找到一种方法来运行只有纳秒的3个最高有效数字。

此脚本代码不起作用:

#!/usr/bin/bash
log_prefix="date +%Y%m%d_%H%M%S_%N | sed s,\".\{6\}$\",,"

echo "`${log_prefix}` blabla"
sleep 3
echo "`${log_prefix}` blabla"

我收到以下错误消息:

date: extra operand `|'
Try `date --help' for more information.

因此,在执行时sed的管道出了问题。

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

通过为此创建一个函数,您可以让您的生活更简单。

类似的东西:

log_echo() { 
  echo $(date +%Y%m%d_%H%M%S_%N | sed 's,.\{6\}$,,') "$@";
}

...

log_echo hello there