我正在使用名为ImageMagick的软件,它具有命令行输入以进行照片比较并输出值。 我想将该输出值保存到特定变量以进行进一步分析。 我该怎么办? 这是我将在命令行中运行的命令:
compare -metric MSE Picture1.jpg Picture2.jpg difference.png
这将比较图片1和图片2之间的像素差异。将其保存为差异并输出一些差异。如果相同则为0。 我希望能够根据变量捕获该值。
答案 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"