time命令的输出结果到bash脚本中的变量

time命令的输出结果到bash脚本中的变量

我知道已经有人问过类似的问题,但我还没有找到一个足够接近我的情况的问题......

我需要在 bash 脚本中对命令进行计时,类似于:

mytime="$(time ( ls ) 2>&1 1>null)"
rm null

这很好用。但是当我尝试ls用更复杂的东西替换时,我遇到了问题:

command="$reg 1d_euler_2nd.rg -nc $nc -ll:cpu $np -ns $nstop"
mytime="$(time ( $command ) 2>&1 1>null)"
rm null

其中reg是环境变量,ncnp、 和nstop都在我的脚本中定义。当我尝试使用此代码时出现以下错误:

(standard_in) 1: syntax error
(standard_in) 1: illegal character: :
(standard_in) 1: illegal character: :
(standard_in) 1: illegal character: $
(standard_in) 1: syntax error
(standard_in) 1: illegal character: :
(standard_in) 1: syntax error
(standard_in) 1: syntax error
(standard_in) 1: illegal character: :

任何帮助将不胜感激!

我很抱歉——当我试图创建一个最小的工作示例时,我意识到问题出在我的代码中的其他地方。

答案1

我可以time使用子 shell 单独捕获输出没有使用变量来抽象命令。为了简洁起见,一个简单的例子:

$ time ( echo "Hello" > example.out 2> example.err ) > time.out 2> time.err
$ ls *{out,err}
example.err example.out time.err    time.out
$ cat time.err

real    0m0.000s
user    0m0.000s
sys     0m0.000s
$ cat example.out
hello

相关内容