为“ echo”输出到文件创建时间戳

时间:2019-07-30 14:41:23

标签: linux windows bash unix cygwin

我正在尝试为下面的.sh文件运行并执行“回声”时产生的信息创建时间戳。最好的方法是什么?

echo "Target File" >> /cygdrive/c/FilePath/Log.txt
if [ -f //TargetDirectory/TargetFile ]
then
    echo //TargetDirectory/TargetFile is present. >> /cygdrive/c/FilePath/Log.txt
else
    echo //TargetDirectory/TargetFile is missing. >> /cygdrive/c/FilePath/Log.txt
fi
echo -e "\n" >> /cygdrive/c/FilePath/Log.txt

3 个答案:

答案 0 :(得分:1)

echo () {
    builtin echo "$(date +'[%m-%d %H:%M:%S]'):" "$@"
}

只需覆盖回声即可。

答案 1 :(得分:1)

如果要为脚本中的 all 输出加时间戳(STDOUT),而不仅仅是echo生成的时间戳:

#!/bin/bash

timestamp () {
    while read -r line
    do
        echo "$(date --iso-8601=ns) $line"
    done
}

exec > >(timestamp)

echo "Target File" >> /cygdrive/c/FilePath/Log.txt
if [ -f //TargetDirectory/TargetFile ]
then
    echo //TargetDirectory/TargetFile is present. >> /cygdrive/c/FilePath/Log.txt
else
    echo //TargetDirectory/TargetFile is missing. >> /cygdrive/c/FilePath/Log.txt
fi
echo -e "\n" >> /cygdrive/c/FilePath/Log.txt
printf '%s' "something"
whoami

如果您要分析脚本的执行情况,请参见my answer here

答案 2 :(得分:0)

我要编写一个日志函数。

function log()
{
    echo "$(date +'[%m-%d %H:%M:%S]'):" $* >> /cygdrive/c/FilePath/Log.txt
}

log "Target File"
if [ -f //TargetDirectory/TargetFile ]
then
    log //TargetDirectory/TargetFile is present.
else
    log //TargetDirectory/TargetFile is missing.
fi
log -e "\n"
相关问题