需要帮助让这个 shell 脚本的输出为零

需要帮助让这个 shell 脚本的输出为零

看到了FINAL_TIME = 0,请帮帮我

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

答案1

在 Bash 中,

set START_TIME = 1475614806

设置$1START_TIME$2=$3数字。赋值的语法是

START_TIME=1475614806

set,没有空格。

答案2

你不需要使用set来分配 Bash 变量。你只需要写variable_name=value,但请注意,可能会有没有空间围绕=运营商!

要读取变量的值,通常必须(正如@choroba 正确指出的那样,这在$(( ... ))算术表达式中不是必需的)$在其名称前面写一个,例如$variable_name

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

相关内容