我编写了一个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
答案 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
会将值打印到目标文件中。