27 lines
446 B
Bash
27 lines
446 B
Bash
|
|
#!/usr/bin/env bash
|
||
|
|
set -euo pipefail
|
||
|
|
|
||
|
|
LIST="$1"
|
||
|
|
DONE="$2"
|
||
|
|
EMAIL="$3"
|
||
|
|
MAX=${4:-1}
|
||
|
|
|
||
|
|
touch "$DONE"
|
||
|
|
count=0
|
||
|
|
|
||
|
|
while IFS= read -r line; do
|
||
|
|
grep -Fxq -- "$line" "$DONE" && continue
|
||
|
|
|
||
|
|
if msmtp "$line" < "$EMAIL"; then
|
||
|
|
printf '%s\n' "$line"
|
||
|
|
printf '%s\n' "$line" >> "$DONE"
|
||
|
|
((++count >= MAX)) && break
|
||
|
|
else
|
||
|
|
echo "FAILED: $line" >&2
|
||
|
|
grep -v $line $LIST > tmp
|
||
|
|
mv tmp $LIST
|
||
|
|
fi
|
||
|
|
|
||
|
|
done < "$LIST"
|
||
|
|
|