Shell 创建回显时间戳/无法在回显字符串中使用管道

Shell 创建回显时间戳/无法在回显字符串中使用管道,shell,unix,unix-timestamp,Shell,Unix,Unix Timestamp,我想使用时间戳在脚本文件中记录输出 在控制台上 日期+%Y%m%d\u%H%m%S\u%N 打印类似于“20120206_104531_944652200”的内容 为了减少我发现的nano和mikro秒数 日期+%Y%m%d\u%H%m%S\u%N\124; sed S,“.\{6\}$”, 这给了我类似于“20120206\u 104531\u 944”的东西 在脚本文件中,它似乎有些不同。 每次记录输出完成时,都必须评估时间戳 此脚本代码可以工作: #!/usr/bin/bash log_p

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

在控制台上

日期+%Y%m%d\u%H%m%S\u%N

打印类似于“20120206_104531_944652200”的内容

为了减少我发现的nano和mikro秒数

日期+%Y%m%d\u%H%m%S\u%N\124; sed S,“.\{6\}$”,

这给了我类似于“20120206\u 104531\u 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的管道出现了一些问题


有什么想法吗?

你可以通过为它创建一个函数来简化你的生活

比如:

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

...

log_echo hello there

你可以为它创建一个函数,让你的生活变得简单一点

比如:

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

...

log_echo hello there

$*
不符合DWIM;例如,尝试使用多个连续空白字符的字符串。改为使用
“$@”
$*
不符合DWIM;例如,尝试使用多个连续空白字符的字符串。请改用“$@”。