我试图制作一个bash脚本来自动安装一个我经常使用的软件,但我遇到了一个小问题。我希望我的脚本验证下载文件的Sa256SUM的有效性,或者响应成功消息或退出错误消息,如果它不是预期的。
这是我迄今为止尝试过的(它有点工作,但不会在失败时退出):
shasum panel.tar.gz |
awk $1=="acca80528628ad362c5733229203a6c4bb3d648a9c40be318ff9f4f9653d505d"{print"SHA256SUM validated, installation may proceed"}
它是安装脚本的一部分,我想让它验证SASUM,如果它与预期的
acca80528628ad362c5733229203a6c4bb3d648a9c40be318ff9f4f9653d505d
不匹配,它应该退出整个脚本。我在上面给出的这一行保持了脚本的正常运行,即使shasum与预期的不匹配。 最佳答案
使用进程替换动态创建shasum -c
的校验和文件:
checksum=acca80528628ad362c5733229203a6c4bb3d648a9c40be318ff9f4f9653d505d
shasum -c <(echo "$checksum panel.tar.gz")
或者使用
shasum
作为文件名将内容管道化到-
:echo "$checksum panel.tar.gz" | shasum -c -
查看退出状态以确定是否继续。
if ! echo "$checksum panel.tar.gz" | shasum -c -; then
echo "Checksum failed" >&2
exit 1
fi
如果你不想做任何事情,除了立即退出,你可以使用
echo "$checksum panel.tar.gz" | shasum -c - || exit 1