让我向大家介绍我的循环:
NUM_LINE=0
while read line; do
let NUM_LINE+=1
if [ $NUM_LINE -lt 41 ]; then
echo -e "\t$BLANC|$ORIGINAL $line $BLANC|"
else
echo -e "\n\t$BLANC## "$GRIS"Llista de Nodes sel·leccionats $BLANC############$ORIGINAL\n"
read AUX
NUM_LINE=0
fi
done <$NODES
那样:
$ BLANC是\033[1;37m
$ GRIS相同
$ ORIGINAL以及
$ NODES是包含许多行的文件的绝对路径,例如:
| 23127 myserver 98.194.263.29 |
问题:
echo
语句中的else
已正确触发。
但是read
语句
有什么建议吗?
答案 0 :(得分:3)
循环不能正常工作的原因是因为read在两种情况下都是从stdin读取的。您需要打开文件的备用文件描述符并从文件描述符中读取。
exec 3<$NODES
NUM_LINE=0
while read -u 3 -r line; do
(( NUM_LINE++ ))
if (( NUM_LINE < 41 )); then
echo -e "\t$BLANC|$ORIGINAL $line $BLANC|"
else
echo -e "\n\t$BLANC## "$GRIS"Llista de Nodes sel·leccionats $BLANC############$ORIGINAL\n"
read AUX
NUM_LINE=0
fi
done