我正在写一个小脚本。他有两个目的:
检查两个文件中保存的数字是否小于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
如何使此脚本正常工作?我已经尝试了一切......
答案 0 :(得分:3)
好的,最后......所有代码都是正确的...唯一的问题是我在Windows上工作,使用Cygwin。我用记事本制作了1.txt ...
if (( "$time1" < 60 )) && (( "$time2" < 60 )); then
工作完美。问题是
\r
在TXT文件中。
在两个文件上运行dos2unix
修复了所有内容。
答案 1 :(得分:0)
从60中删除引号。而不是
&& (( "$time2" < "60" ));
尝试:
&& (( $time2 < 60 ));