Tenho vários algoritmos diferentes, que preciso prototipar.
Então eu faço protótipos de programas e um script. o script chamado time.sh
se parece com isso
echo "Timing algorithm1:"
time algo1 >dev/null
echo "Timing algorithm2:"
time algo2 >dev/null
echo "Timing algorithm3:"
time algo3 >dev/null
...
Agora, para simplificar, substitua ls
por algo1
... (não quero postar código para cada algoritmo, forçar as pessoas a compilá-lo ...)
echo " Timing ls"
time ls 2>&1 > /dev/null
chame-otime_ls.sh
então eu faço
sh time_ls.sh > ls_sh.meas
Não importa o que eu faça, quaisquer que sejam os redirecionamentos que eu coloque no script ou na linha de comando, obtenho um dos dois resultados. Ou eu recebo a saída de eco, ou seja, "Timing ls" no terminal e os dados de tempo ls_sh.meas
ou o oposto.
É como se o stdout e o stderr não quisessem se juntar e criar um arquivo de dados do bebê.
Alguém pode explicar esse comportamento estranho e sugerir uma solução alternativa?
PS: Isso é feito no bash.