Precisa de ajuda com este shell script obtendo saída como zero

0

Vendo FINAL_TIME = 0 , por favor me ajude

set START_TIME = 1475614806
set END_TIME = $(date +%s)
set FINAL_TIME = $((END_TIME - START_TIME))
printf "%dh %dm %ds" "$((FINAL_TIME/3600))" "$((FINAL_TIME%3600/60))" "$((FINAL_TIME%60))" > reports/tle_top.duration.txt
    
por Karthik 04.10.2016 / 21:15

2 respostas

6

No bash,

set START_TIME = 1475614806

define $1 para START_TIME , $2 para = e $3 para o número. A sintaxe da atribuição é

START_TIME=1475614806

Não há set , não espaços.

    
por choroba 04.10.2016 / 21:19
1

Você não usa set para atribuir variáveis Bash. Você simplesmente escreve variable_name=value , mas note que pode haver nenhum espaço ao redor do operador = !

Para ler o valor de uma variável, você deve normalmente (como @choroba apontou corretamente, isso não é necessário dentro de $(( ... )) expressões aritméticas) escreva um $ na frente de seu nome, como $variable_name . / p>

START_TIME=1475614806
END_TIME=$(date +%s)
FINAL_TIME=$(($END_TIME - $START_TIME))
printf "%dh %dm %ds" "$(($FINAL_TIME/3600))" "$(($FINAL_TIME%3600/60))" "$(($FINAL_TIME%60))" > reports/tle_top.duration.txt
    
por Byte Commander 04.10.2016 / 21:21