Resultado de saída do comando time para variável no script bash

1

Eu sei que perguntas semelhantes a isso foram feitas, mas eu não encontrei uma que abordasse minha situação de perto o suficiente ...

Eu preciso tempo um comando em um script bash, semelhante a este:

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

Isso funciona bem. Mas quando tento substituir o ls por algo mais complicado, me deparo com problemas:

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

em que reg é uma variável de ambiente e nc , np e nstop estão todos definidos no meu script. Eu recebo o seguinte erro quando tento usar este código:

(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: :

Qualquer ajuda seria muito apreciada!

Minhas desculpas - enquanto tentava criar um exemplo mínimo de trabalho, percebi que o problema estava em outro lugar no meu código.

    
por EternusVia 08.08.2017 / 22:52

1 resposta

1

Eu sou capaz de capturar a saída de time separadamente muito bem com um subshell sem usando uma variável para abstrair um comando. Um exemplo simples de brevidade:

$ 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
    
por 08.08.2017 / 23:08