Используя следующие переменные,
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
Вы можете написать следующую процедуру:
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
Затем вы можете использовать свой сценарий следующим образом:
./script BOD ADDR
Изменить: Альтернативный способ сделать это - читать каждый из текстовых и адресных файлов в отдельные массивы, при этом каждый индекс содержит строку соответствующего файла, как таковой:
#!/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
Здесь два созданных массива тексты
и письма
. "$ {# text [@]}"
представляет общее количество строк в массиве text
, и каждая строка может быть доступна для "$ {text [i]} "
или " $ {mails [i]} "
, где i
начинается с 0, движение вверх, содержащее строку i + 1
указанного файла .
Вам не нужно добавлять кнопку как таковую, вы можете просто перенаправить событие мыши с вашей панели прямо в ваш оконный менеджер (в данном случае openbox ), который позволяет вам щелкнуть правой кнопкой мыши -любой пустое место на панели tint2, чтобы открыть меню.
Из руководства по настройке панели tint2 вы хотите прочитать это:
wm_menu = boolean (0 or 1) : Defines if tint2 forwards unhandled mouse events to your window manager. Useful for window managers such as openbox, which display the start menu if you right click on the desktop.
Вам необходимо отредактировать файл конфигурации, перейти к разделу конфигурации панели и добавить следующее:
wm_menu = 1
Сохраните и перезапустите tint2, теперь вы сможете -щелкнуть правой кнопкой мыши любую пустую область панели для вызова меню.
Я не знаю, как отправлять события напрямую в openbox из командной строки.
Альтернативой является настройка openbox для использования привязки клавиш. (Я использую дублирующую клавишу Windows )для отображения меню. Затем вы можете использовать xdotool для нажатия клавиши, как описано в Как я могу нажать клавишу Windows с помощью xdotool
Затем вы можете добавить раздел в файл конфигурации tint2
button = new
button_text = Start
button_font_color = #ababab 100
button_lclick_command = xdotool key super
Затем просто измените строку конфигурации панели, добавив P
в начало, т.е.
panel_items = P:LTSC