我使用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
的输出分配给变量,然后进行检查?
答案 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
会使-
输出到标准输出。