Это немного побродит.Первое, что я заметил, было следующее:
printf "%s\n" "Variable> $LINE" >>$DEBUG_LOG
И я сразу же подумал: «Это код на Си».В программировании оболочки printf
является несколько странным инструментом, который иногда полезен, в отличие от printf
в C, который является первым, чего вы достигаете, когда печатаете что-то.Попробуйте вместо этого:
echo "Variable> $LINE" >>$DEBUG_LOG
Другая проблема потенциально связана с telnet .Если вы проанализируете вывод telnet в оболочке, вы получите несколько символов, которые вам не нужны - например, возврат каретки.Значение по умолчанию IFS
для bash
равно <space><tab><newline>
, которое НЕ будет перехватывать возврат каретки, а возврат каретки будет связываться с расположением символов в вашем терминале.
В идеале вы должны получить правильноеклиент Telnet и использовать его не в интерактивном режиме.Однако, в крайнем случае, вы можете сделать это:
while tr -d '\r' | read -r LINE; do
...
Это приведет к удалению возвратов каретки - но все равно может быть другой мусор telnet, включая команды WILL / WONT / DO / DONT иNUL байтов.