【发布时间】:2022-01-18 00:06:32
【问题描述】:
尝试编写一个带有 2 个参数($1 和 $2)的脚本,其中一个代表 $hash 和 $file_name。
我正在尝试利用jq 来解析下载所需的数据并比较PASS 或FAIL。
我发现自己无法思考这个问题。
这是我的代码
#!/usr/bin/env sh
#
# Sifchain shasum check (revised).
#
# $1
hash_url=$( curl -R -s https://api.github.com/repos/Sifchain/sifnode/releases | jq '.[] | select(.name=="v0.10.0-rc.4")' | jq '.assets[]' | jq 'select(.name=="sifnoded-v0.10.0-rc.4-linux-amd64.zip.sha256")' | jq '.browser_download_url' | xargs $1 $2 )
echo $hash_url
# $2
hash=$( curl -s -L $hash_url | jq'.$2')
file_name=$(curl -R -s https://api.github.com/repos/Sifchain/sifnode/releases | jq '.[] | .name')
#
#
echo $hash | sha256sum
echo $file_name | sha256sum #null why?
echo "\n"
## version of the release $1, and the hash $2
## sha256 <expected_sha_256_sum> <name_of_the_file>
sha256() {
if echo "$1 $2" #| sha256sum -c --quiet
then
echo pass $1 $2
exit 0
else
echo FAIL $1 $2
exit 1
fi
}
# Invoke sha256
sha256 $hash_url $file_name
理想情况下,这应该适用于任何哈希与正确文件的比较,在调用 BASH 脚本时提取 2 个参数。
【问题讨论】:
-
jq'.$2'对我来说看起来不正确。你是说jq ".$2"吗? -
我认为你是对的,单引号和双引号总是抛出我。
-
curl -R -s https://api.github.com/repos/Sifchain/sifnode/releases | jq '.[] | .name'返回多个名称。
标签: bash debugging curl jq url-parameters