【问题标题】:Get last line of shell output as a variable获取 shell 输出的最后一行作为变量
【发布时间】:2015-10-01 14:23:30
【问题描述】:

我正在使用 exiftool 编写一个 shell 脚本,以自动更改某个文件夹中包含的图片上的一些 exif 标签,我想在作业完成时使用输出在我的 NAS(QNAP)上获得通知。

一切正常,但是 - 当通知系统截断消息时 - 我只想接收我需要的信息,即 shell 输出的最后一行,例如:

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 变量 | tail -1,但可能我犯了一些基本错误,我收到如下内容:

Exiftool cronjob 在相机上完成:4512 个文件失败条件 |尾 -1

如何以正确的方式做到这一点?谢谢

【问题讨论】:

    标签: shell tail exiftool qnap


    【解决方案1】:

    将尾部放在捕获括号内。

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

    这里不需要双引号。我猜你 试过了

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

    【讨论】:

    • 感谢您的回答。不幸的是,它似乎不起作用,因为我现在收到两个通知错误:“Exiftool cronjob 在相机上完成:语法:exiftool [OPTIONS] 文件请参阅 exiftool 文档以获取完整的选项列表。”和“Exiftool cronjob 在相机上完成:4689 个文件失败的情况”。
    • @giopas, exif 无法判断它是否由子shell 启动,因此对其使用没有任何影响。也许同时引入了一个错字?将set -x 放在脚本顶部以启用日志记录,并将以原始形式记录的exif 命令与在命令替换中记录的命令进行比较。
    【解决方案2】:

    现在可能要回答一个旧帖子,但请尝试使用 -n 标志(请参阅 tail --help)并使用刻度包装命令输出。

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

    (user464502 的回答对我不起作用,因为 tail 命令无法识别参数“-1”)

    【讨论】:

    • 当时,我正在镜像 OP 的语法。 '-n' 是 Posix 并且是首选。现代风格是 $(...) 而不是反引号,尽管两者都有效。
    • 您可以edit 您的答案,而不仅仅是描述 cmets 的潜在改进。 :)
    猜你喜欢
    • 2018-08-17
    • 1970-01-01
    • 2016-06-10
    • 1970-01-01
    • 2015-10-30
    • 2018-08-24
    • 1970-01-01
    • 2018-02-11
    • 2020-08-05
    相关资源
    最近更新 更多