2015-07-13 7 views
1

Я работаю над сценарием оболочки с exiftool для автоматического изменения некоторых тегов exif на изображениях, содержащихся в определенной папке, и я хотел бы использовать вывод для получения уведомления о моем NAS (QNAP), когда задание завершено.Получить последнюю строку вывода оболочки как переменную

Все уже работает, но - как система оповещения обрежет сообщение - Я хотел бы получать только ту информацию, что мне нужно, то есть последняя строка вывода оболочки, которая, например, следующее:

Warning: [minor] Entries in IFD0 were out of sequence. Fixed. - 2015-07-12 15.41.06.jpg                    
4512 files failed condition              
    177 image files updated 

проблема заключается в том, что в настоящее время я только получить следующее уведомление:

ExifTool cronjob завершена на камеры: 4512 файлы не удалось условие

Что я хотел бы получить вместо этого:

ExifTool cronjob завершена на камеры: файлы 177 изображений обновленный

Сценарий следующий:

#!/bin/sh 
# exiftool script for 2002 problem 
dir="/share/Multimedia/Camera" 
cd "$dir" 
FOLDER="$(printf '%s\n' "${PWD##*/}")" 
OUTPUT="$(exiftool -overwrite_original -r '-CreateDate<DateTimeOriginal' -if '$CreateDate eq "2002:12:08 12:00:00"' -if '$DateTimeOriginal ne $CreateDate' *.[Jj][Pp][Gg])" 
/sbin/notice_log_tool -a "Exiftool cronjob completed on ${FOLDER}: ${OUTPUT}" --severity=5 
exit 0 

Чтобы сделать это я играл с переменной $ OUTPUT, используя | хвост -1, но, вероятно, я делаю некоторые основные ошибки, и я получаю что-то вроде:

Exiftool cronjob завершено на Фотокамера: 4512 файлов не удалось условие | хвост -1

Как это сделать в правильном направлении? Thanks

ответ

9

Положите хвост внутри захвата parens.

OUTPUT=$(exif ... | tail -1) 

Здесь не нужны двойные кавычки. Я предполагаю, что вы пытались

OUTPUT="$(exif ...) | tail -1" 
+0

Спасибо за ваш ответ. К сожалению, это не работает, так как я получаю две ошибки уведомления: «Exiftool cronjob завершен на Camera: Синтаксис: exiftool [ОПЦИИ] FILE Обратитесь к документации exiftool для получения полного списка параметров». и «Exiftool cronjob завершен на Camera: 4689 файлов не удалось». – giopas

4

Вероятно, старый пост будет отвечать сейчас, но попробуйте использовать флаг -n (см хвост --help) и завернуть вывод команды с помощью клещей.

OUTPUT=`exif ... | tail -n 1` 

(ответ user464502 не работал для меня, как команда хвост не распознает параметр «-1»)

+0

В то время я отражал синтаксис OP. '-n' является Posix и является предпочтительным. Современный стиль - $ (...), а не backticks, хотя оба работают. – user464502