2016-11-16 14 views
0

私は2つのタイムスタンプ変数を比較して、それらが同じかどうかを判断しようとしています。変数tempDateは最後の有効な日付の値を保持するために使用され、変数timeStampはループ内の次のタイムスタンプの値を保持します。BASH文字列比較True返す

私はifステートメントを使用して、2つの変数が互いに等しくないかどうかを検出しますが、ifステートメントは毎回trueを返します。変数は、そのように割り当てられている:2つの変数が目に見えている場合でも文は、常にtrueを返した場合、私は私のスクリプトを実行すると

col2=2010-01-01 00:54 

:COL2のように割り当てられた任意のタイムスタンプに等しくなる

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 

同一。これは私の変数の割り当て方法に問題がありますか?それとも単純な構文ミスですか?

答えて

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

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

注首都 "S" である必要があります。未定義の変数によって引き起こされたバグのこれらの種類を回避するために

+0

追加の開始時にシェバング行にオプションを追加することができますStack Overflowに関する恥ずかしい質問のリストへ... – WxPilot

1

スクリプトでこれを追加します。

set -u 

またはスクリプト

#!/bin/bash -u 
+0

もし私ができるなら、私はこれをアップヴォートしたい、私はすべてのスクリプトに追加している – WxPilot