1

我写了一个 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
4

2 回答 2

2

这一行:

cat $LST2 >/tmp/0.cmp

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

       echo $LST2 >/tmp/0.cmp

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

于 2013-09-25T12:38:45.827 回答
2

尝试这个

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

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

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

于 2013-09-25T12:39:06.827 回答