Bash 将“time./a.out”的输出放入变量
我使用time命令执行xxx$time./a.out这样的程序,输出如下:Bash 将“time./a.out”的输出放入变量,bash,variables,Bash,Variables,我使用time命令执行xxx$time./a.out这样的程序,输出如下: real 0m7.250s usr 0m10.395s sys 0m0.026s 我想要得到的是0和7.250,就像在0m7.250秒内一样。我尝试过awk{print$2},但没有成功;那里什么也没有 PS:我尝试使用>,将time命令的输出放入一个文件,也没有成功。time命令将其输出发送到标准错误,以免干扰正常的程序输出。您需要使用2>&1将其重定向到可以捕获的位置。time命令将其输出发送到标准错误,以免干
real 0m7.250s
usr 0m10.395s
sys 0m0.026s
我想要得到的是0和7.250,就像在0m7.250秒内一样。我尝试过awk{print$2},但没有成功;那里什么也没有
PS:我尝试使用>,将time命令的输出放入一个文件,也没有成功。time命令将其输出发送到标准错误,以免干扰正常的程序输出。您需要使用2>&1将其重定向到可以捕获的位置。time命令将其输出发送到标准错误,以免干扰正常的程序输出。您需要使用2>&1将其重定向到可以捕获的位置。尝试:
pax$ tm=$((time sleep 1) 2>&1 | awk '/^real/{print $2}') ; echo $tm
0m1.002s
当然,用sleep 1代替您自己的a.out命令只是一个例子
它为time命令创建一个子shell,并确保其标准错误被发送到标准输出,而不是time专门将其信息输出到标准错误,以便它与程序的正常输出(它的计时)分开
awk命令捕获从实数开始的行,并输出第二个参数。尝试:
pax$ tm=$((time sleep 1) 2>&1 | awk '/^real/{print $2}') ; echo $tm
0m1.002s
当然,用sleep 1代替您自己的a.out命令只是一个例子
它为time命令创建一个子shell,并确保其标准错误被发送到标准输出,而不是time专门将其信息输出到标准错误,以便它与程序的正常输出(它的计时)分开
awk命令捕获从实数开始的行,并输出第二个参数。您还可以设置TIMEFORMAT环境变量,以避免使用awk进行解析。时间格式=%R;time sleep 1 2>&1您还可以设置TIMEFORMAT环境变量,以避免使用awk进行解析。时间格式=%R;时间睡眠12>&1