dav*_*726 2 linux bash shell sha sh
我正在尝试制作一个 bash 脚本来自动安装我经常使用的软件,但我遇到了一个小问题。我希望我的脚本验证下载文件的 sha256sum 的有效性,如果不是预期的,则以成功消息响应或以错误消息退出。
这是我到目前为止尝试过的(它有点工作但不会在失败时退出):
shasum panel.tar.gz |
awk $1=="acca80528628ad362c5733229203a6c4bb3d648a9c40be318ff9f4f9653d505d"{print"SHA256SUM validated, installation may proceed"}
Run Code Online (Sandbox Code Playgroud)
它是安装脚本的一部分,我希望它验证 shasum,然后如果它与预期不匹配acca80528628ad362c5733229203a6c4bb3d648a9c40be318ff9f4f9653d505d,它应该退出整个脚本。我上面给出的行保持脚本按原样运行而不会停止,即使 shasum 与预期不匹配。
使用进程替换来动态创建校验和文件shasum -c:
checksum=acca80528628ad362c5733229203a6c4bb3d648a9c40be318ff9f4f9653d505d
shasum -c <(echo "$checksum panel.tar.gz")
Run Code Online (Sandbox Code Playgroud)
或者将内容通过管道传输到shasum,使用-作为文件名:
echo "$checksum panel.tar.gz" | shasum -c -
Run Code Online (Sandbox Code Playgroud)
查看退出状态以确定是否继续。
if ! echo "$checksum panel.tar.gz" | shasum -c -; then
echo "Checksum failed" >&2
exit 1
fi
Run Code Online (Sandbox Code Playgroud)
如果你不想立即退出以外的任何事情,你可以使用
echo "$checksum panel.tar.gz" | shasum -c - || exit 1
Run Code Online (Sandbox Code Playgroud)