Можно использовать этот режим в любой программе, которая пользуется readline библиотекой путем добавления set editing-mode vi
кому: ~/.inputrc
.
Можно также использовать rlwrap
заставить другие программы использовать readline.
echo "Checking mail queue and fetchmail process"
while ! postqueue -p | grep -q empty && ps -C fetchmail > /dev/null; do
echo "There is still mail in queue or fetchmail is still working"
sleep 1
done
echo "Terminating the connection"
killall wvdial
while [ "`find /var/spool/postfix/{deferred,active,maildrop}/ -type f | wc -l`" -gt 0 ] ||
[ "`ps -C fetchmail -o pid= | wc -l`" -gt 0 ]; do
sleep 5
done
killall wvdial
или даже с меньшим количеством порожденных процессов:
while [ -n $("find /var/spool/postfix/{deferred,active,maildrop}/ -type f") ] ||
[ -n $("ps -C fetchmail -o pid=") ]; do
sleep 5
done
killall wvdial
[ "`somecommand | wc -l`" -gt 0 ]
ужасно косвенный способ проверить на пустой вывод. [ -n "$(somecommand)" ]
прямой путь. Можно добиться большего успеха, хотя, см. ответ nerdhacker. Кроме того, необходимо тестировать постфикс и fetchmail одновременно, а не никогда не тестировать постфикс, после того как Вы начали тестировать на fetchmail (существует все еще состояние состязания, но окно намного меньше). О, и всегда помещаемые двойные кавычки вокруг замен. То, что Вы думаете, произошло бы, если бы вывод содержал пробел (как, несколько строк)?
– Gilles 'SO- stop being evil'
12.11.2011, 00:17