我正在通过工具
time
测量命令持续时间,但命令的结果被隐藏了。例如,我正在测量 find
或 ls
的持续时间,我看到了持续时间,但没有看到文件列表。
v=&&X=$((time v=$(ls)) 2>&1 | grep real)&&echo $X&&echo "$v"
u@debian:~$ v=&&X=$((time v=$(ls)) 2>&1 | grep real)&&echo $X&&echo "$v"
real 0m0.004s
u@debian:~$
我希望
X
和 v
变量都可访问。 X
应返回 real 0m0.004s
和 v
应返回文件列表。
如何测量命令的持续时间并获取命令的结果?
这个 Shellcheck 干净的 Bash 代码演示了一种实现您想要的功能的方法:
#! /bin/bash -p
ls_time=$({ time ls; } 2>&1)
ls_output=${ls_time%$'\n'real*}
time_output=${ls_time:${#ls_output}+1}
X=${time_output%%$'\n'*}
v=${ls_output%$'\n'}
declare -p X v