如何将exiv2的空输出替换为'empty'类占位符?
解决exiv2空输出替换为占位符的方法
当使用exiv2 -q -K Xmp.photoshop.Credit image.jpg查询不存在的元数据字段时,控制台无输出。可以通过shell脚本的方式将空输出替换为指定占位符,以下是几种常用方法:
方法一:Bash参数扩展
利用Bash的参数扩展特性,直接判断命令输出是否为空:
output=$(exiv2 -q -K Xmp.photoshop.Credit image.jpg) echo "${output:-empty}"
${output:-empty}表示如果output变量为空或未设置,则输出empty,否则输出变量本身的值。
方法二:使用Awk处理输出
通过Awk过滤输出内容,当无有效行时输出占位符:
exiv2 -q -K Xmp.photoshop.Credit image.jpg | awk 'NF{print; next} END{print "empty"}'
NF代表当前行的字段数,非零表示行非空,直接打印;如果所有行都为空,在结束时打印empty。
方法三:POSIX兼容的条件判断
如果使用的是不支持Bash参数扩展的POSIX标准shell,可以用if语句判断:
output=$(exiv2 -q -K Xmp.photoshop.Credit image.jpg) if [ -z "$output" ]; then echo "empty" else echo "$output" fi
-z用于检查字符串长度是否为零,为空则输出占位符,否则输出原结果。
需要注意的是,exiv2本身没有内置的空输出替换选项,上述方法都是通过shell层面对命令输出进行处理实现需求。
内容的提问来源于stack exchange,提问作者K. S.
相关产品推荐
相关产品推荐

