set -x或set -v打印每个执行的命令。
当命令开始执行时,如何获得打印命令?
不要说这是一个完美的解决scheme,但我认为它基本上完成了你所需要的。 只需将主脚本包装在一个函数中,并有一个单独的函数来调用时间。 我相信这可以大大提高,以得到确切的预期结果,但这是我想出了:
#!/bin/bash tstamp() { date +[%T:%N]; } yourscript() { set -x echo hello sleep 1 echo this sleep 2 echo is sleep 3 echo an echo example } yourscript | while read line; do echo -e "$(tstamp)\t$line"; done
以上脚本输出如下内容:
+ echo hello + sleep 1 [16:17:33:344851100] hello + echo this + sleep 2 [16:17:34:352269700] this + echo is + sleep 3 [16:17:36:380810900] is + echo an + echo example [16:17:39:392033300] an [16:17:39:414361400] example