2013-09-25 61 views
1

我編寫了一個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

這條線:

cat $LST2 >/tmp/0.cmp 

,除非你有一個名爲51228或許應該be

 echo $LST2 >/tmp/0.cmp 

你想要的內容shell變量LST2的TS,而不是通過LST2

+0

工作。我忽略了顯而易見的使用echo命令。謝謝你的幫助! – user2815189

2

命名的文件的內容試試這個

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

cat命令嘗試打開與所提供的價值的文件。使用echo將打印值到目標文件中。