Pumko_adm
@Pumko_adm
Всего помаленьку

Bash-скрипт — как разделить данные?

Здравствуйте!
Помогите со скриптом.
#! /bin/bash
to=$1
subject=$2
body=$3

ack=`echo "select message FROM table WHERE id='$body'" | mysql -uuser -ppassword -Dbase`
cat <<EOF | mail -s "$subject" "$to"
$ack
EOF

В таком виде все работает, почта отсылается, но при этом в переменной body=$3 может быть несколько данных, разделенных чем угодно (могу сам выставить ручками, например data1;data2;data3).

Как можно разделить эти данные? Чтобы в ack уходило, например, первое значение body - data1. А последующие значения можно было вставить в вывод mail?

Наверное, чтобы было понятнее, то данный скрипт для заббикса, для отправки уведомлений.
Заббикс настроен на отправку почты через внешний скрипт, представленный выше. Из документации к заббиксу:
"Когда скрипт оповещения выполняется ему передается через командную строку 3 ($1, $2 и $3 соответственно): Кому Тема Сообщение"

Так вот, в $3 передаются данные типа: {EVENT.ID};{INVENTORY.LOCATION1};{TRIGGER.STATUS};{TRIGGER.SEVERITY};{EVENT.DATE};{EVENT.TIME}
Первый из списка - {EVENT.ID} как раз таки и нужен для mysql-запроса. Остальное требуется передать в теле письма.
  • Вопрос задан
  • 3246 просмотров
Решения вопроса 2
vvpoloskin
@vvpoloskin
Инженер связи
#! /bin/bash
to=$1
subject=$2
body=$3

ack=`echo "select message FROM table WHERE id='$(echo $body | cut -d\; -f1)'" | mysql -uuser -ppassword -Dbase`
cat <<EOF | mail -s "$subject" "$to"
$(echo $body | cut -d\; -f2-)
EOF
Ответ написан
Pumko_adm
@Pumko_adm Автор вопроса
Всего помаленьку
Пока гуглил/мучил людей, пришли к такому выводу ещё:
#! /bin/bash

to=$1
subject=$2
declare -a body="($3)"
body1="${body[0]}"
body2="${body[1]}"

ack=`echo "select message FROM acknowledges WHERE eventid='$body1'" | mysql -uroo$
cat <<EOF | mail -s "$subject" "$to"
$body1 $ack
EOF
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы