不知道为什么我的while循环会抛出错误

时间:2016-08-24 16:18:45

标签: bash

我有以下用于连接服务器的代码。但我似乎在while循环部分遇到错误。没有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

2 个答案:

答案 0 :(得分:3)

尝试

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

您也可以使用算术条件

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

答案 1 :(得分:0)

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

我猜可能更整洁

注意:对您的脚本使用小写变量coz大写变量通常保留给系统,即LINE->line。与ENDSTART等同样。