BASH字符串比较返回True

问题描述:

我想比较两个时间戳变量以确定它们是否相同。变量tempDate用于保存上次有效日期的值,而变量timeStamp将保存循环中下一个时间戳的值。BASH字符串比较返回True

我正在使用if语句来检测两个变量是否彼此不相等,但if语句每次都返回true。该变量分配,象这样:

timeStamp=${col2:5:2}${col2:8:2}${col2:0:4} 
tempDate=${col2:5:2}${col2:8:2}${col2:0:4} 

# Here is how the if statement is written... 
if [ "$timestamp" != "$tempDate" ]; then 
    #Additional Code 
    echo "It is a new day!" 
fi 

如果COL2就等于任意时间戳分配为:

col2=2010-01-01 00:54 

当我执行我的脚本如果语句返回true一致,即使在两个变量明显相同。这是如何分配我的变量的问题?或者它是一个简单的语法错误?

if [ "$timestamp" != "$tempDate" ]; then 

应该

if [ "$timeStamp" != "$tempDate" ]; then 

注意是大写的 “S”。

+0

添加开始添加的家当行选项那堆栈溢出尴尬的问题列表... – WxPilot

为了避免这些种类造成的不确定变量的bug在脚本中添加此:

set -u 

,或者您可以在脚本

#!/bin/bash -u 
+0

我会upvote如果我可以,我将它添加到我的所有脚本 – WxPilot