Возможный дубликат:
Отключить модем, когда очередь постфикса пуста
Этот код сценария проверяет, пуста ли почтовая очередь postfix, и если это правда, он отключает мой модем.
#!/bin/sh
postqueue -p|grep empty
if [ $? -eq 0 ]; then
killall wvdial
fi
Мне нужно запускать его столько раз, сколько нужно, пока почтовая очередь не опустеет.
Как я могу его зациклить?
Возможно размещение еще который возвращается для выполнения скрипта из строки postqueue -p | grep пусто ?
Я знаю, что это может быть просто, но я не слишком разбираюсь в сценариях bash, поэтому мне нужна помощь, чтобы завершить этот код.
#!/bin/bash
while ! postqueue -p | grep -q empty; do
sleep 1
done
killall wvdial
Это то, что вы ищете?
while postqueue -p | grep -q empty; do
killall wvdial
sleep 1
done
Этот код работает даже лучше (так как он быстрее в больших очередях):
while [ `find /var/spool/postfix/{deferred,active,maildrop}/ -type f | wc -l` -gt 0 ]; do
sleep 5
done
killall wvdial
И обратите внимание, что этот вопрос является дубликатом вашего собственный вопрос.