我正在尝试为下面的.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
答案 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"