Вы можете сделать это (я немного сократил его для удобства чтения):
{ awk 'BEGIN{...} END{...} END{if($1<100){exit(1)}}' file || exit; } > >(sendmail -t ...)
awk
вызывается в составной команде .
if ($ 1 проверяет значение
exit (1)
прерывает дальнейшее выполнение кода внутри awk
и возвращает код выхода 1 || exit
выполняется, когда команда awk
возвращает false (код выхода больше 0). Затем оболочка закрывается, и команды больше не выполняются. Я не использую канал |
здесь, потому что он откроет подоболочку, а затем эта подоболочка будет закрыта, а следующая команда все равно будет выполнена. > (sendmail -t ...)
вывод отправляется на sendmail
(если еще не завершен). Тогда вся команда будет выглядеть так:
{ awk 'BEGIN{print "Subject:SASL Spam\nFrom:Server.de \nTo:test@emailer.com"}
END{printf("%s\015\n", $1" | "$2)} END{if($1<100){exit(1)}}' \
/home/web0/html/tools/uptime/sasl.txt || exit; } > >(/usr/lib/sendmail -t test@emailer.com)
Если вы посмотрите на скрипт ProM68.sh
, то увидите, что он устанавливает путь к классу относительно текущего рабочего каталога, а не каталога, содержащего скрипт. Итак, если вы используете ./ProM68.sh
, ваш текущий рабочий каталог совпадает с каталогом, содержащим скрипт, поэтому он работает, если вы запускаете его таким образом. Файлы рабочего стола обычно запускаются с домашним каталогом в качестве текущего рабочего каталога, если вы не укажете путь, например Path=/home/bengbers/Programs/Prom
. (Также у вас есть пробелы после false
для ключа Terminal
в соответствии с desktop-file-validate
, но это, вероятно, не вызывает никаких проблем.)