#!/bin/bash
while ! postqueue -p | grep -q empty; do
sleep 1
done
killall wvdial
Este código de script verifica se a fila de mensagens postfix está vazia e, se for verdadeira, desconecta meu modem.
#!/bin/sh
postqueue -p|grep empty
if [ $? -eq 0 ]; then
killall wvdial
fi
Eu preciso executá-lo muitas vezes, conforme necessário, até que a fila de mensagens fique vazia.
Como posso fazer um loop?
Talvez colocando um else que retorne para executar o script na linha de postqueue -p | grep empty ?
Sei que pode ser simples, mas não sou especialista demais em scripts bash, por isso preciso de ajuda para concluir esse código.
É isso que você está procurando?
while postqueue -p | grep -q empty; do
killall wvdial
sleep 1
done
Esse código funciona ainda melhor (pois é mais rápido em filas grandes):
while [ 'find /var/spool/postfix/{deferred,active,maildrop}/ -type f | wc -l' -gt 0 ]; do
sleep 5
done
killall wvdial
E observe que essa pergunta é uma cópia de sua pergunta própria .