LINUX.ORG.RU

[bash][fetchmail] Ткните носом

 ,


0

1

Есть идея- через скрипт проверять каждые 5 минут почту фетчмейлом и играть определённый в случае появления новых писем. Вижу себе это так: while true; do fetchmail -c каким то макаром считать сколько писем в ящике записывать это в переменную x y=$X if [ «$y» -gt «$x» ] then mplayer /home/user/1.mp3 sleep 5m done fi

Подскажите как считать этот самый x. Ну и если я так ошибок накуралесил, тоже скажите.

★★

Ответ на: комментарий от lazyklimm

Заглянув в man, я подумал, что procmail служит для получения почты. Мне не нужно получать почту, нужно просто издавать звук при появлении новой на сервере. Но за идею всё равно спасибо!

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

В общем пошаманив пришел к следующему виду:

#!/bin/bash
while true; 
do  
fetchmail -c |fold -s -w 3 > 2.txt
sleep 30s
x='head -n 1 2.txt'
y=$x
if [ "$x" -gt "$y" ] 
then mplayer /home/disa/Музыка/NOIZE\ MC/14.\ Noize\ MC\ -\ Наше\ движение.mp3
else 
sleep 1m 
fi
done 

В строке fetchmail -c |fold -s -w 3 > 2.txt скрипт получает ответ фетчмейла о том сколько писем на сервере и режет его на много строк по три символа.

В итоге в 1 строке 2.txt оказываеться число,например 270.

Однако при выполнении скрипта почему-то выдается

[: 13: Illegal number: head -n 1 2.txt 
Где я напортачил?

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

А что значит:

- x='head -n 1 2.txt' + x=`head -n 1 2.txt`

?

Я только начал Баш изучать. Интересуют именно значения "-" и «+» в начале строки?

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

Минус — удалить строку, плюс — добавить. Это не bash, это патч %)

GotF ★★★★★
()
Ответ на: комментарий от do0dlez

Это почему? Вроде когда проверял с read и echo все нормально работало. Иксу присваиваеться значение, потом игреку, потом икс обновляется, а игрек сохраняет старое значение.

Napitok ★★
() автор топика
Ответ на: комментарий от do0dlez
+x=$( fetchmail -c | fold -s -w 3 | head -n 1 )

Кстати это работать в скрипте не будет т.к. фетчмейл дает свой выхлоп только секунд через 30.

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

Скажи пожалуйста, он будет сообщать «New mail» только в случае когда будет новая почта или каждый раз когда какую-нибудь почту найдет?

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

Если количество прочитанных писем не равно их количеству в ящике.

baverman ★★★
()
Ответ на: комментарий от Napitok
y=$x 
if [ "$x" -gt "$y" ] 

Первой строкой ты уравниваешь y и х, второй --- сравниваешь их

do0dlez ★★
()
Ответ на: комментарий от Napitok

Кстати это работать в скрипте не будет т.к. фетчмейл дает свой выхлоп только секунд через 30.

и что? просто из пайпа не выйдет эти 30 секунд. Или я чего-то не понимаю

do0dlez ★★
()
Ответ на: комментарий от anonymous

Смысл в том, чтобы почту на компьютер не получать.

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

Результатом

x=`head -n 1 2.txt` 
скрипт считает
`head -n 1 2.txt`
Как заставить его считать значением x не саму команду, а результат его выполнения - 257?

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