Eu consertei isso definindo o comando inteiro para uma variável e, em seguida, avaliando isso:
$ full_cmd="/bin/time -v $exec $opts"
e $ eval $full_cmd
Estou cronometrando um binário personalizado no formulário: ./prog --opt1=arg1 --opt2=arg2 --opt3="arg3"
É necessário que a terceira opção tenha um argumento citado. Em um script, salvo todas as opções:
exec=./prog
e opts="--opt1=arg1 --opt2=arg2 --opt3=\"arg3\""
Quando tento cronometrar o programa, estou recebendo um erro com meu programa analisando os argumentos. Eu estou supondo que é porque está vendo o último arg como não citado. A saída de /bin/time
:
\bin\time -v $exec $opts
Error parsing args
(do meu programa)
Command being timed: "./prog --opt1=arg1 --opt2=arg2 --opt3="arg3""
No entanto, quando apenas copio e colo, o que afirma é o comando, é executado corretamente:
./prog --opt1=arg1 --opt2=arg2 --opt3="arg3"
- executa muito bem
O que o /bin/time
está fazendo e como posso corrigir isso? Eu estou supondo que tem a ver com as citações, como talvez seja executado eval ou algo assim. Não tenho certeza do que fazer sobre isso.
Eu consertei isso definindo o comando inteiro para uma variável e, em seguida, avaliando isso:
$ full_cmd="/bin/time -v $exec $opts"
e $ eval $full_cmd