Я пытаюсь написать script, который может быть добавлен к любой команде. Когда это будет сделано, он выполнит команду, заданную приведенными ниже аргументами, а затем отправьте сообщение пользователю по электронной почте, когда команда будет завершена.
$PROG=$1
// Run program below
$PROG [email protected]
ECODE=$?
echo -e 'Subject: `hostname`: $PROG finished\r\nTo: <$USER>\r\n\r\nExited with $ECODE\r\n' | sendmail $USER
Это работает большую часть времени, но когда цитирование присутствует в аргументах команды для запуска, они удаляются. Пример:
Работает:
# notify-finished rsync -avz source/ [email protected]:dest/
Не работает:
# notify-finished rsync -avz -e 'ssh -c blowfish' source/ [email protected]:dest/
Во втором случае [email protected]
раскрывается до rsync -avz -e ssh -c blowfish source [email protected]:dest/
, без одинарных кавычек. Он также не работает с двойными кавычками.