检查图像是否使用optipng优化

时间:2019-03-12 11:26:17

标签: bash shell

我使用optipng优化我的项目的图像。 我想通过检查图像是否没有针对运行脚本进行优化而实现自动化。

if [[ $FILE == *.png ]]
    then
    BASEFILE=$(basename $FILE)
    optipng -simulate -quiet $FILE -log $$.log
    TEST=$(cat $$.log |grep "optimized" |wc -l)
   ....

问题是我无法将输出写入新文件,并且需要在不创建文件的情况下进行检查。 有没有一种方法可以将ptipng -simulate -quiet $FILE的输出分配给变量,然后进行检查?

2 个答案:

答案 0 :(得分:0)

我从未使用过optipng,也不知道是否需要-log开关,但是您可以像这样重写脚本:

if [ "${image}" = "*.png" ]; then
    local baseName="$(basename "{image})"    #I assume this code is executed inside a function, that's why I used local

    local output
    if ! output="$(optipng -simulate -quiet "${baseName})"; then     #I assume that optipng returns error code in case of failure. In such case, when errior occures, "if" logic will be executed
        printf "Failed to test file ${baseName}"
        return
    fi

    if ! printf '%s' "${output}" | grep -qi "optimized"; then   #i for case insensitive, q for quiet. I ommited the wc -l because I did not see any reason for counting
        printf "Not optimized"
    fi
fi

答案 1 :(得分:0)

根据this link,您可以:

CharSet.Unicdoe

将文件名替换为TEST=$(optipng -simulate -quiet "$FILE" - | grep "optimized" | wc -l) # or just handle grep return valud if optipng -simulate -quiet "$FILE" - | grep -q "optimized"; then echo "It is optimized" fi 会使-输出到标准输出。