recording total runtime no script bash

0

Eu tenho o seguinte script. Quando é executado, imprime Start e end Times no arquivo 'result.txt'.

No entanto, também quero registrar o tempo de execução total ( end-start ), mas onde estou fazendo echo runtine no final, ele retorna apenas runtime: sem nada gravado próximo a ele. Estou fazendo algo incorreto?

#!/bin/bash
clear
echo "Test 001" > result.txt
echo "start time: " $(date +%T) >> result.txt
start='date +%s'
#DO STUFF HERE
end='date +%s'
echo "end time: " $(date +%T) >> result.txt
runtime=$((end-start))
echo "runtime: " $(runtime) >> result.txt
echo " - - - "
    
por IGGt 08.04.2015 / 12:56

2 respostas

2

Primeiro de tudo, você está reinventando a roda. É para isso que serve o comando time :

$ time script.sh
real    0m0.005s
user    0m0.000s
sys     0m0.004s

Então, você tem um erro de sintaxe:

echo "runtime: " $(runtime) >> result.txt

A sintaxe $(foo) é a substituição de comando, ele tentará executar foo . O que você quis dizer foi

 echo "runtime: $runtime" >> result.txt

A propósito, você deve sempre incluir as mensagens de erro que você recebe na sua pergunta.

    
por 08.04.2015 / 13:09
3

Você tem um erro de digitação na sua declaração de eco. Deve ser

#!/bin/bash
#clear
echo "Test 001" > result.txt
echo "start time: " $(date +%T) >> result.txt
start='date +%s'
#DO STUFF HERE
end='date +%s'
echo "end time: " $(date +%T) >> result.txt
runtime=$((end-start))
echo "runtime: $runtime" >> result.txt
echo " - - - "
    
por 08.04.2015 / 13:07