变量包含在算术函数中不被视为一的数字

时间:2014-12-02 13:27:18

标签: bash math arithmetic-expressions

我正在写一个小脚本。他有两个目的:

检查两个文件中保存的数字是否小于60,然后不执行任何操作。

ELSE - 将第一个数字除以第二个数字,乘以100并检查结果是否大于20,如果是,则对文件运行diff并将结果保存到文件中。

我在剧本的第一部分。我目前的代码:

#!/bin/bash

function timeDiff() {

local time1=$(cat $1)
local time2=$(cat $2)

  echo $time1
  echo $time2 

  if (( "$time1" < 60 )) && (( "$time2" < "60" )); then     

  echo No comparision needed.       

  else      
    diff $1 $2      

  fi
}

timeDiff 1/1.txt 2/1.txt

文件1.txt的包含是:

1
(one empty line here)

文件2.txt的包含是:

2
(one empty line here)

对于这个脚本,我得到这样的控制台输出:

1
2
 < 60 ")syntax error: invalid arithmetic operator (error token is "
1c1
< 1
---
> 2

如何使此脚本正常工作?我已经尝试了一切......

2 个答案:

答案 0 :(得分:3)

好的,最后......所有代码都是正确的...唯一的问题是我在Windows上工作,使用Cygwin。我用记事本制作了1.txt ...

if (( "$time1" < 60 )) && (( "$time2" < 60 )); then

工作完美。问题是

\r

在TXT文件中。

在两个文件上运行dos2unix修复了所有内容。

答案 1 :(得分:0)

从60中删除引号。而不是

&& (( "$time2" < "60" ));

尝试:

&& (( $time2 < 60 ));