Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 将“time./a.out”的输出放入变量_Bash_Variables - Fatal编程技术网

Bash 将“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命令将其输出发送到标准错误,以免干

我使用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命令将其输出发送到标准错误,以免干扰正常的程序输出。您需要使用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