比较数字时,简单的ksh shell脚本失败

时间:2013-09-25 12:30:43

标签: shell ksh

我编写了一个shell脚本,它对两个包含数字的变量进行了比较。如果变量包含相同的数字,则脚本运行正常。但是,如果第一个变量(数字)大于第二个变量(数字)则失败。

这是shell脚本。注意:LST1 = 51228,LST2 = 34152

#!/bin/ksh

LST1=`cat /tmp/1.lst`
LST2=`cat /tmp/2.lst`
echo $LST1 $LST2

if [[ $LST2 -gt $LST1 ]];then
 cat $LST2 >/tmp/0.cmp
else
 echo "do nothing" >/tmp/0.cmp
fi

以下是运行时错误:

#!/bin/ksh 
LST1=`cat /tmp/1.lst`
+ + cat /tmp/1.lst
LST1=34152
LST2=`cat /tmp/2.lst`
+ + cat /tmp/2.lst
LST2=51228
echo $LST1 $LST2
+ echo 34152 51228
34152 51228

if [[ $LST2 -gt $LST1 ]];then
 cat $LST2 >/tmp/0.cmp
else
 echo "do nothing" >/tmp/0.cmp
fi
+ [[ 51228 -gt 34152 ]]
+ cat 51228
+ 1> /tmp/0.cmp
cat: Cannot open 51228: No such file or directory

2 个答案:

答案 0 :(得分:2)

这一行:

cat $LST2 >/tmp/0.cmp

除非你有一个名为51228的文件应该是

       echo $LST2 >/tmp/0.cmp

你想要shell变量LST2的内容,而不是LST2命名的文件的内容

答案 1 :(得分:2)

试试这个

if [[ $LST2 -gt $LST1 ]];  then
    echo $LST2 >/tmp/0.cmp
...

cat命令尝试使用提供的值打开文件。

使用echo会将值打印到目标文件中。

相关问题