Bash脚本判断Timestamp过期异常:始终输出‘Update token...’求排查
问题分析与解决
你的脚本始终输出Update token...的核心原因是代码中的小于号被错误写成了HTML实体<,Bash无法识别这个符号,导致算术比较表达式((exp < NOW))触发语法错误。在[[ ... ]]的逻辑或判断中,语法错误的命令退出状态为非零,而[[会将非空的退出状态值视为“真”,因此无论exp是否有效,整个条件都会成立。
修正后的脚本
将<替换为实际的小于号<,同时可以简化双括号内的变量引用(双括号中无需加$):
exp=1662023095 NOW=$(date +%s) if [[ -z $exp || ((exp < NOW)) ]]; then echo "Update token..." else echo "Token still valid!" fi
额外优化提示
- 如果需要兼容更严格的数值判断,也可以在
[[中使用-lt(小于)运算符替代双括号:if [[ -z $exp || $exp -lt $NOW ]]; then echo "Update token..." else echo "Token still valid!" fi - 若
exp可能被赋值为0(对应1970年的时间戳,必然过期),当前条件已经覆盖这种情况,无需额外修改。
内容的提问来源于stack exchange,提问作者user672009
相关产品推荐
相关产品推荐

