2016-03-25 13 views
2

こんにちは皆、悪い英語を申し訳ありません! 私は「電報の警告」を作成しようと、これは条件付きの作ってる:変数の比較エラー

NOW=$(date +%s) 
NOWCHECK=$((NOW-3)) 
[...] 
if ("$DATE" < "$NOWCHECK"); then # DATE is a string variable with seconds passed from 1/1/1970 
... 
fi 

私はこのエラーを取得する:

line 26: 1458939588: No such file or directory 

は私が間違って何をしているのですか? ありがとうございます!

答えて

4

あなたが経験していることは、Bashが(...)の式を実行しようとしていることです。それは$DATEコマンドを実行し、入力を$NOWCHECKにリダイレクトすると解釈されます。しかし、それはあなたが望むものではありません。

算術演算の演算子は、((...))ではなく、(...)です。このように行います。

if (("$DATE" < "$NOWCHECK")); then 

そして、((...))$をドロップする方が良いでしょう:

if ((DATE < NOWCHECK)); then 
2

用途:

if [[ "$DATE" -lt "$NOWCHECK" ]]; # -lt: less than 
0

あなたが設定されたこの二つの変数がある場合:

NOW=$(date +%s) NOWCHECK=$((NOW-3)) 

次に:どちらか一方((...))

if ((NOW < NOWCHECK)); then 
... 
fi 

または(リダイレクトとして解釈し、NOWCHECKの値としてという名前のソース・ファイルが存在しないなどのエラーを提示している)<文字を削除数式展開を修正するために切り替える:

if [[ $NOW -lt $NOWCHECK ]]; then 
... 
fi 

if [ "$NOW" -lt "$NOWCHECK" ]; then 
... 
fi