flapflapjack
@flapflapjack
на треть я прав

Куда пропадает тройка из числа 36?

У меня тут полтергейст какой-то происходит. В упор не вижу ошибку.

Получаю CURL'ом с почтового ящика через IMAP список UID'ов писем, которые собираюсь далее обрабатывать:
#!/bin/bash
#ставлю англ. локаль чтобы date выдал <b>Feb</b> вместо <b>Фев</b>
LANG=en_US.utf8
DATE_STRING=`date +"01-%h-%Y"`
#отрезаю из ответа IMAP первые 9 символов из строки ( * SEARCH 2 3 4 10 20 34 35 36)
MAIL_LIST_CMD=`curl -s  "imap://me%40site.ru:password@mail.srv.site.ru/INBOX?SINCE%2001-feb-2020%20from%20abon.site.ru" | cut -c 9-`


MAIL_LIST_CMD при этом получается такого вида:
2 3 4 10 20 34 35 36

Далее обычный цикл:

for i in $MAIL_LIST_CMD
do

        echo -e "$i \n"
done


и получаю вот такое недоразумение:
2
3
4
10
20
34
35
6


И даже(!!) если я сделаю так:
MAIL_LIST_CMD="$MAIL_LIST_CMD 37 38"

То получаю тот же бред:
2
3
4
10
20
34
35
6
37
38


Куда девается тройка?
Если в конце всего кода сделать echo $MAIL_LIST_CMD, то я получаю совершенно нормальный ряд с числом 36 в конце.

P/S:

Решил попробовать так:
echo $(($i+1-1))

Получил:
2
3
4
10
20
34
35
+1-1»)ошибка синтаксиса: недопустимый математический оператор (неверный маркер «


То есть в последнем числе из CURL'a 36 отрисовывается с каким-то левым лишним символом.
Как можно поправить?
  • Вопрос задан
  • 703 просмотра
Решения вопроса 1
flapflapjack
@flapflapjack Автор вопроса
на треть я прав
проблема решилась так:
MAIL_LIST_CMD=`echo -e "$MAIL_LIST_CMD" | tr -d '\r\n'`


Был лишний перевод каретки
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
saboteur_kiev
@saboteur_kiev Куратор тега Linux
software engineer
а так?
for i in $MAIL_LIST_CMD
do
        echo "$i "
done
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы