Você referenciou a variável interna bash SECONDS (que gera o número de segundos decorridos desde que a instância atual do shell foi invocada) e salvou o valor como outra variável time_spent . Agora, depois disso toda vez que você verificar o valor da variável time_spent , você obterá o mesmo valor - o salvo, no momento da expansão de SECONDS .
Para obter dinamicamente SECONDS , você deve referenciar $SECONDS diretamente, em vez de usar uma variável intermediária:
echo "Time: $SECONDS"
Se você insistir em usar uma variável intermediária, certifique-se de fazer a expansão de $SECONDS a cada vez.
Em relação ao valor de SECONDS sendo 0 , você pode facilmente reproduzir isso:
% bash -c 'echo $SECONDS'
0
O ponto é: quando você está calculando o valor, ainda não é um segundo, então o valor está sendo 0 , corretamente.