1

数値を含む 2 つの変数を比較するシェル スクリプトを作成しました。変数に同じ番号が含まれている場合、スクリプトは正常に実行されます。ただし、最初の変数 (数値) が 2 番目の変数 (数値) より大きい場合は失敗します。

ここにシェルスクリプトがあります。注: 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

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 に答える