我试图加快一些脚本的调用子shell并做各种各样的事情。我想知道是否有任何可用的工具来执行shell脚本及其嵌套的shell,并报告脚本的哪些部分是最昂贵的。
#!/bin/bash echo "hello" echo $(date) echo "goodbye"
您可以设置PS4显示时间和行号。这样做不需要安装任何实用程序和工作,而不将stderr重定向到stdout。
对于这个脚本:
#!/bin/bash -x # Note the -x flag above,it is required for this to work PS4='$(date "+%s.%N ($LINENO) + ")' for i in {0..2} do echo $i done sleep 1 echo done
输出如下:
+ PS4='$(date "+%s.%N ($LINENO) + ")' 1291311776.108610290 (3) + for i in '{0..2}' 1291311776.120680354 (5) + echo 0 0 1291311776.133917546 (3) + for i in '{0..2}' 1291311776.146386339 (5) + echo 1 1 1291311776.158646585 (3) + for i in '{0..2}' 1291311776.171003138 (5) + echo 2 2 1291311776.183450114 (7) + sleep 1 1291311777.203053652 (8) + echo done done
这假设是GNU date,但是您可以将输出规范更改为您喜欢的任何内容或与您使用的日期版本相匹配的任何内容。
注意:如果您有一个现有的脚本,要进行此操作而不进行修改,则可以执行以下操作:
PS4='$(date "+%s.%N ($LINENO) + ")' bash -x scriptname
原文地址:https://www.jb51.cc/bash/388531.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。