Joh*_*Doe 20 bash command-line
我想在UNIX变种的命令行上做类似的事情
if (shasum httpd-2.4.7.tar.bz2 == 19asdasdasd56462e44d61a093ea57e964cf0af05c0e) echo 'good to go'
Run Code Online (Sandbox Code Playgroud)
我不想写一个单独的脚本文本页面来检查这个.
上面的内容显示语法错误.但必须有一个光滑的方式来解决这个问题?
这该怎么做?
小智 19
shasum httpd-2.4.7.tar.bz2 |
awk '$1=="19asdasdasd56462e44d61a093ea57e964cf0af05c0e"{print"good to go"}'
Run Code Online (Sandbox Code Playgroud)
所以通常你从shasum得到这个输出
19asdasdasd56462e44d61a093ea57e964cf0af05c0e *httpd-2.4.7.tar.bz2
我的命令是采用第一个字段$1,并将其与字符串进行比较.如果字符串匹配,则awk打印"good to go".
ipi*_*pid 11
简单地使用grep似乎是最好的方法:
> shasum httpd-2.4.7.tar.bz2 | grep 19ed9ee56462e44d61a093ea57e964cf0af05c0e
Run Code Online (Sandbox Code Playgroud)
当校验和正确时将突出显示:
当校验和不正确时,不会显示任何内容。
还:
$?bash 脚本。grep当找到某些东西时,退出并返回代码 0;当未找到任何内容时,退出代码为 1。grep -i <CHECKSUM>。curl -o或者wget -O然后检查。echo "19asdasdasd56462e44d61a093ea57e964cf0af05c0e httpd-2.4.7.tar.bz2" \
| shasum -c
Run Code Online (Sandbox Code Playgroud)
我使用上一个/最后一个命令的退出代码:
如果校验和有效,则最后执行的命令的退出代码为0:
> echo "${PROMETHEUS_CHECKSUM} prometheus-${PROMETHEUS_VERSION}.linux-arm64.tar.gz" | sha256sum -c
> echo $?
0
Run Code Online (Sandbox Code Playgroud)
如果校验和是不正确的,那么退出代码是不同的比0:
> export PROMETHEUS_CHECKSUM='some garbage'
> echo "${PROMETHEUS_CHECKSUM} prometheus-${PROMETHEUS_VERSION}.linux-arm64.tar.gz" | sha256sum -c
prometheus-2.0.0.linux-arm64.tar.gz: FAILED
sha256sum: WARNING: 1 computed checksum did NOT match
> echo $?
1
Run Code Online (Sandbox Code Playgroud)
这是带有if声明的整个示例:
#!/bin/bash
...
echo "${PROMETHEUS_CHECKSUM} prometheus-${PROMETHEUS_VERSION}.linux-arm64.tar.gz" | sha256sum -c
if [ $? != 0 ]; then
echo 'Prometheus checksum is not valid'
exit 1
fi
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14793 次 |
| 最近记录: |