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

发布于 2025-01-02 19:49:52 字数 908 浏览 1 评论 0原文

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

在控制台上

date +%Y%m%d_%H%M%S_%N

打印类似 "20120206_104531_944652200" 的内容,

以便剪切所有这些 nano 和 mikro 秒

我找到了日期 +%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 的管道出现问题。

有什么想法吗?

I would like to use timestamps for logging outputs in a scriptfile.

On the console

date +%Y%m%d_%H%M%S_%N

prints something like "20120206_104531_944652200"

In order to cut all those nano and mikro seconds I found

date +%Y%m%d_%H%M%S_%N | sed s,".\{6\}$",,

which gives me something like "20120206_104531_944"

In a scriptfile it seems to be somewhat different.
The timestamp must be evaluated each time a logging output is done.

This scriptcode works:

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

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

Unfortunately I did not find a way to get this running with only the 3 most significant digits of the nanoseconds.

This scriptcode does not work:

#!/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"

I get the following error message:

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

So, something is going wrong with the pipe to sed at execution time.

Any ideas?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

转身以后 2025-01-09 19:49:52

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

像这样的东西:

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

...

log_echo hello there

You can make your life a bit simpler by creating a function for that.

Something like:

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

...

log_echo hello there
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文