LINUX.ORG.RU
решено ФорумAdmin

Zimbra - zmmailbox+bash+(несколько слов в названии)

 ,


0

1

Доброе...

Был и естьскрипт, который удалял письма в ящиках, папка входящие и прочии. Но случилось так, что папки стали содержать по не сколько слов, например : «до 1.10.15», «Ранняя кореспонденция»

И тут появилась проблема, что скрипт названия таких папок бьет наслова. Пробовал и кавычками двойными и одинарными и по всякому. не выходит.

i=mail@domain.ru

/opt/zimbra/bin/zmmailbox -z -m $i s -l 30 in:$p | grep `date -d '-0 day' +%m/%d/%y` | grep письмо | sed -e "s/^\s\s*//" | sed -e "s/\s\s*/ /g" | cut -d" " -f2 

Тут переменная $p берется из файла, в котором написаны все папки.

Получаю ошибку

Inbox/до ERROR: mail.NO_SUCH_FOLDER (no such folder path: /Inbox/до) 1.10.2015

Как экранировать эту переменную. чтобы скрипт смотрел в папки в именах которых несколько слов?

Спасибо.

могу только предполагать т.к. незнаю что оно делает
«in:$p», in:«$p» пробовали? Если руками вместо $p написать хоть работает?

anc ★★★★★
()

... | grep `date -d '-0 day' +%m/%d/%y` | grep письмо | sed -e "s/^\s\s*//" | sed -e "s/\s\s*/ /g" | cut -d" " -f2

Ужас, летящий на крыльях ночи.

zmmailbox -z -m $i s -l 30 in:$p | ...

Переменные, разумеется, надо кавычить ("$i", "in:$p"), но какая это наверное мелочь, когда у вас там еще черт знает сколько такого же кода:

Тут переменная $p берется из файла, в котором написаны все папки.

Я так понимаю, все, что вы привели, — это только для того, чтоб все осознали глубину ваших глубин, а догадаться, где у вас там еще косяки, надо вслепую, не видя программы.

Zmicier ★★★★★
()
Последнее исправление: Zmicier (всего исправлений: 1)
Ответ на: комментарий от anc

руками не рабтает, кавычки и апострофы пробовал... тоже не работает

firefedot
() автор топика
Ответ на: комментарий от Zmicier

Больше по сути нет ни чего ...

вот


/opt/zimbra/bin/zmmailbox -z -m auser@domen.net gaf | grep mess | cut -d"/" -f 2- | grep -v "@domen.net" > /tmp/messfolder.list
i=auser@domen.net
for p in $(cat /tmp/messfolder.list);
    do
        echo $p
        /opt/zimbra/bin/zmmailbox -z -m $i s -l 30 "in:/"$p"" | grep `date -d '-0 day' +%m/%d/%y` | grep $DELTEXT | sed -e "s/^\s\s*//" | sed -e "s/\s\s*/ /g" | cut -d" " -f2 >> $MESID
    done

Он должен пройтись по папкам найти тему письма с темой письмо...)

firefedot
() автор топика
Ответ на: комментарий от firefedot

Упрощу)

Упрощу - вот код который не работает даже если писать сразу имя папки

/opt/zimbra/bin/zmmailbox -z -m auser@domen.net s -l 30 "in:Inbox/Два слова" | grep `date -d '-0 day' +%m/%d/%y`

Это просто команда из консоли, без скриптов и прочего. и если папка имя которой в одно слово, то все нормально, если больше одного, то ошибка, Inbox/до ERROR: mail.NO_SUCH_FOLDER (no such folder path: /Inbox/Два)

firefedot
() автор топика

Решено)

В общем в вики зимбры прочел)

/opt/zimbra/bin/zmmailbox -z -m auser@domen.net s -l 30 in:«\„Inbox/Два слова“\»

А для переменой

/opt/zimbra/bin/zmmailbox -z -m auser@domen.net s -l 30 in:«\»$p"\"

То есть «\» = это как ограничители, показывающие начало и конец пробельной папки)

Капец просто.

Всем спасибо.

firefedot
() автор топика
4 мая 2016 г.

А если попробовать так?

#!/bin/bash

SAVEIFS=$IFS

IFS=$(echo -en «\n\b»)

for p in `cat you_list`; do

echo $p

done;

IFS=$SAVEIFS

tsvbrest
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.