捕获ImageMagick的结果与变量进行比较

时间:2016-04-15 23:12:28

标签: bash

我正在使用名为ImageMagick的软件,它具有命令行输入以进行照片比较并输出值。 我想将该输出值保存到特定变量以进行进一步分析。 我该怎么办? 这是我将在命令行中运行的命令:

compare -metric MSE Picture1.jpg Picture2.jpg difference.png

这将比较图片1和图片2之间的像素差异。将其保存为差异并输出一些差异。如果相同则为0。 我希望能够根据变量捕获该值。

5 个答案:

答案 0 :(得分:2)

为我工作:

variable=$(compare -metric MSE Picture1.jpg Picture2.jpg difference.png 2>&1)

variable=$(compare -metric MSE Picture1.jpg Picture2.jpg null: 2>&1)

答案 1 :(得分:1)

使用命令替换。

variable=$(compare -metric MSE Picture1.jpg Picture2.jpg difference.png)

答案 2 :(得分:1)

命令的结果将始终位于$?。确保在执行另一个命令之前将该值保存在另一个变量中,否则它将被覆盖。

答案 3 :(得分:1)

正如Ignacio Vazquez-Abrams的评论中所述, compare实际上通过其退出代码 报告相似性状态,而不是通过其stdout输出。

Ignacio在他自己的回答中也提到了

  • 最新命令的退出代码在特殊变量$?
  • 中报告
  • 值得保存立即退出变量中的代码,以便后续命令不会覆盖它。

此外,退出代码0表示图片类似,而不是相同

这是一个代码段,展示了如何保存退出代码并随后处理它:

compare -metric MSE Picture1.jpg Picture2.jpg difference.png # add >/dev/null for no output
ec=$?  # save exit code
case $ec in  # evaluate exit code
  0)
    echo "images are similar"
    ;;
  1)
    echo "images are dissimilar"
    ;;
  *)
    echo "an unexpected error occured"
    ;;
esac

答案 4 :(得分:0)

或使用反引号。 AKA,命令substitution

variable=`compare -metric MSE Picture1.jpg Picture2.jpg difference.png`

echo "$variable"