![需要帮助让这个 shell 脚本的输出为零](https://linux22.com/image/1141099/%E9%9C%80%E8%A6%81%E5%B8%AE%E5%8A%A9%E8%AE%A9%E8%BF%99%E4%B8%AA%20shell%20%E8%84%9A%E6%9C%AC%E7%9A%84%E8%BE%93%E5%87%BA%E4%B8%BA%E9%9B%B6.png)
看到了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
设置$1
为START_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