Usando as seguintes variáveis,
text_file="$1"
mail_file="$2"
lines_in_text=$( cat "$text_file" | wc -l )
lines_in_addr=$( cat "$mail_file" | wc -l )
line_num=1
Você pode escrever a seguinte rotina:
send_mail() {
while [[ "$line_num" -le "$lines_in_text" ]]; do
text_line=$( sed -n "${line_num}p" "$text_file" )
mail_line=$( sed -n "${line_num}p" "$mail_file" )
echo "$text_line" | mail "$mail_line"
line_num=$(( line_num + 1 ))
done
}
send_mail
Você pode usar seu script da seguinte maneira:
./script BOD ADDR
Editar: Uma maneira alternativa de fazer isso seria ler cada um dos arquivos de texto e endereço em matrizes separadas, onde cada índice contém uma linha do respectivo arquivo, como tal:
#!/bin/bash
IFS=$'\n' read -d '' -r -a texts < "$1"
IFS=$'\n' read -d '' -r -a mails < "$2"
send_mail_alternate() {
for (( i = 0; i < "${#texts[@]}"; i++ )); do
echo "${texts[i]}" | mail "${mails[i]}"
done
}
send_mail_alternate
Aqui, os dois arrays criados são texts
e mails
. "${#texts[@]}"
representa o número total de linhas na matriz texts
, e cada linha pode ser acessada por "${texts[i]}"
ou "${mails[i]}"
, onde i
inicia a partir de 0, contendo a linha i+1
do arquivo especificado.