2016-08-24 6 views
0

私はサーバーに接続するための次のコードを持っています。しかしwhileループ部分でエラーが出るようです。 whileループの2番目の条件がなければ正常に動作しますが、2番目の条件も必要です。私のwhileループがエラーをスローしている理由が分かりません

どのような考えですか?

エラーは次のとおりです。

./test.sh: line 83: conditional binary operator expected 
./test.sh: line 83: syntax error near `LINE' 
./test.sh: line 83: `while [[ read LINE <&3; && $((END-START)) -le 59 ]]' 

コードは次のとおりです。

exec 3<>/dev/tcp/${SERVER}/${PORT} 
echo "login $NICK $PASS" >&3 

START=$(date +%s); 
minutes=0 
END=0 

while [[ read LINE <&3; && $((END-START)) -le 59 ]] 
do 

END=$(date +%s); 
secs=$((END-START)) 
if [[ "$secs" == 60 ]] 
then 
minutes=$((minutes + 1)) 
START=$(date +%s); 
echo "$minutes have passed since I connected." >&3 
fi 
done 
+0

'[[' 'はグループ化の構文ではありません。それはそれ自体のコマンドであり、そのように、別のコマンドをラップするだけではありません。 – chepner

答えて

3

はあなたが使用することもでき

while read LINE <&3 && [[ $((END-START)) -le 59 ]] 

を試してみてください算術条件

while read LINE <&3 && ((END - START <= 59)) 
+0

これにより、問題が解決しました。すばらしい応答時間に感謝します。 – user1305988

0
while read line <&3 && (((END-START) < 59)) 

は私が


ノート推測すっきりことがあります使用小文字を大文字の変数は通常LINE->lineすなわちシステム用に予約されていますだってあなたのスクリプトのためにvaraibles。同様にEND,STARTなどとなります。

関連する問題