免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5536 | 回复: 3

bash -x 如何打印出时间戳 [复制链接]

论坛徽章:
0
发表于 2012-02-29 19:28 |显示全部楼层
HI,各位
RT,在执行脚本的时候,用 bash -x 可以打印出脚本详细的执行过程,现在有个问题,如何在打印详细过程的时候同时打印出脚本中
每条命令执行的时间?

比如:
$ cat test.sh
#!/bin/bash
echo "hello"
echo "world"

bash -x test.sh
{2012-02-29 18:00:00} + echo hello
{2012-02-29 18:00:01} hello
{2012-02-29 18:00:02} + echo world
{2012-02-29 18:00:03} world

论坛徽章:
0
发表于 2012-02-29 19:46 |显示全部楼层
  1. bash -x temp.sh 2>&1 | sed -u 'h;s/.*/date/e;G;s/\n/ : /;'
复制代码
硬搞的 ..

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
发表于 2012-02-29 20:27 |显示全部楼层
回复 1# dolinux


可以这样搞硬PS4。

  1. $ PS4='\d \t+ '

  2. $ set -x

  3. $ for i in t*.txt ;do echo $i;done
  4. Wed Feb 29 20:27:02+ for i in 't*.txt'
  5. Wed Feb 29 20:27:02+ echo test.txt
  6. test.txt
  7. Wed Feb 29 20:27:02+ for i in 't*.txt'
  8. Wed Feb 29 20:27:02+ echo tt67.com.txt
  9. tt67.com.txt
复制代码

论坛徽章:
0
发表于 2012-02-29 20:46 |显示全部楼层
回复 2# hbmhalley

找到解决方法了,如下:

mengalong@ubuntu:/tmp$ cat a.sh
#!/bin/bash
export PS4='+ [$USER@\H \w ${BASH_SOURCE[0]}LINENO ${FUNCNAME[0]} \D{%F %T}]\$'
source func.sh
function tt
{
        for i in `seq 0 3`
        do
                echo $i
        done
}
echo hello
tt
aa


mengalong@ubuntu:/tmp$ bash -x a.sh
+ export 'PS4=+ [$USER@\H \w ${BASH_SOURCE[0]}LINENO ${FUNCNAME[0]} \D{%F %T}]\$'
+ PS4='+ [$USER@\H \w ${BASH_SOURCE[0]}LINENO ${FUNCNAME[0]} \D{%F %T}]\$'
+ [mengalong@ubuntu /tmp a.sh:3  2012-02-29 04:45:58]$source func.sh
+ [mengalong@ubuntu /tmp a.sh:11  2012-02-29 04:45:58]$echo hello
hello
+ [mengalong@ubuntu /tmp a.sh:12  2012-02-29 04:45:58]$tt
++ [mengalong@ubuntu /tmp a.sh:5 tt 2012-02-29 04:45:58]$seq 0 3
+ [mengalong@ubuntu /tmp a.sh:6 tt 2012-02-29 04:45:58]$for i in '`seq 0 3`'
+ [mengalong@ubuntu /tmp a.sh:8 tt 2012-02-29 04:45:58]$echo 0
0
+ [mengalong@ubuntu /tmp a.sh:6 tt 2012-02-29 04:45:58]$for i in '`seq 0 3`'
+ [mengalong@ubuntu /tmp a.sh:8 tt 2012-02-29 04:45:58]$echo 1
1
+ [mengalong@ubuntu /tmp a.sh:6 tt 2012-02-29 04:45:58]$for i in '`seq 0 3`'
+ [mengalong@ubuntu /tmp a.sh:8 tt 2012-02-29 04:45:58]$echo 2
2
+ [mengalong@ubuntu /tmp a.sh:6 tt 2012-02-29 04:45:58]$for i in '`seq 0 3`'
+ [mengalong@ubuntu /tmp a.sh:8 tt 2012-02-29 04:45:58]$echo 3
3
+ [mengalong@ubuntu /tmp a.sh:13  2012-02-29 04:45:58]$aa
+ [mengalong@ubuntu /tmp func.sh:3 aa 2012-02-29 04:45:58]$echo 'ni mei'
ni mei

其余的自由组合~

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP