Этот сценарий ничего не делает, кроме вывода получаемых сигналов.
kill -l "$i"
заменяет номер сигнала на имя.
Я бы изменил этот сценарий на
#!/bin/bash
echo "My PID is $$"
echo "Send SIGNALS with this command:"
echo " kill -SIG $$"
echo "SIG may be either a signal name or number, see kill -l"
for i in {1..64}; do
trap "echo 'signal[$$] Caught signal SIG$(kill -l "$i")($i)'" "$i";
done;
read -s -n1;
Ваш код:
echo "There are "$qSize "emails in the mail queue" | sed 's/^/To: '"$sTo"'\nSubject: *ALERT* - Mail queue o
n '"$host"' exceeds limit\nFrom: '"$sFr"'\n\n/' | sendmail -t
больно читать. Хуже того, даже если вы -отформатируете его, чтобы сделать его читабельным, бесполезное использование sed
будет странным -просто неправильным. Вы используете sed
для вставки заголовков электронной почты перед выводом оператора эха. В этом нет никакого смысла.
Короче говоря, вам не нужно использовать здесь sed
, и вы не должны использовать здесь sed
. Это не добавляет ничего, кроме дополнительных сложностей и возможностей для ошибок.
Вместо этого сделайте что-нибудь подобное:
sendmail -t <<EOF
From: $sFr
To: $sTo
Subject: *ALERT* - Mail queue on '$host' exceeds limit
There are $qSize emails in the mail queue
EOF
или вот так:
subject="*ALERT* - Mail queue on '$host' exceeds limit"
message="There are $qSize emails in the mail queue"
echo "$message" | sendmail -f "$sFR" -s "$subject" "$sTO"
или даже так:
{
echo "From: $sFr"
echo "To: $sTo"
echo "Subject: *ALERT* - Mail queue on '$host' exceeds limit"
echo
echo "There are $qSize emails in the mail queue"
} | sendmail -t
Даже так лучше:
echo "From: $sFr
To: $sTo
Subject: *ALERT* - Mail queue on '$host' exceeds limit
There are $qSize emails in the mail queue" | sendmail -t
Короче говоря, почти любой другой способ передачи нескольких строк текста в другую программу (sendmail
, в данном случае )предпочтительнее того, как это делаете вы.
У вас две линии
echo "There are "$qSize "emails in the mail queue" | sed 's/^/To: '"$sTo"'\nSubject: *ALERT* - Mail queue o
n '"$host"' exceeds limit\nFrom: '"$sFr"'\n\n/' | sendmail -t
должно быть одной строкой
echo "There are "$qSize "emails in the mail queue" | sed 's/^/To: '"$sTo"'\nSubject: *ALERT* - Mail queue on '"$host"' exceeds limit\nFrom: '"$sFr"'\n\n/' | sendmail -t
т. е. ошибка, скорее всего, возникла из-за того, как вы копировали/вставляли ее на этот компьютер.
Дело в том, что проблема в 79 колонке (В 80 колонке отображается? )как бы подтверждает это.