无法在具有curl命令输入的bash中添加除数

无法在具有curl命令输入的bash中添加除数,bash,curl,Bash,Curl,我正在制作一个bash脚本,该脚本计算一个文件如果分块下载将需要破坏多少部分。就像在本例中一样,它是120mb。为了获得要下载的文件的大小,我使用curl命令,然后将其除以120mb(以字节为单位),但不计算可变部分(部分的数量) 这是我的密码: echo "Enter URL: " read url size=$(curl -sI $url |grep Content-Length|awk '{print $2}') limit=$((120*1024*1024)) parts=$(($siz

我正在制作一个bash脚本,该脚本计算一个文件如果分块下载将需要破坏多少部分。就像在本例中一样,它是120mb。为了获得要下载的文件的大小,我使用curl命令,然后将其除以120mb(以字节为单位),但不计算可变部分(部分的数量)

这是我的密码:

echo "Enter URL: "
read url
size=$(curl -sI $url |grep Content-Length|awk '{print $2}')
limit=$((120*1024*1024))
parts=$(($size/$limit))
echo $parts
我甚至尝试使用bc:

parts=$(echo $size/$limit|bc)
但零件没有任何价值。
谁能告诉我出了什么问题。

您可以直接在单
awk
中执行此操作,因为您无法在shell中执行浮点运算:

curl -sI "$url" | awk -F': *' '$1=="Content-Length"{print $2/(120*1024*1024)}'
要将其放入变量中,请执行以下操作:

var=$(curl -sI "$url" | awk -F': *' '$1=="Content-Length"{print $2/(120*1024*1024)}')

您可以在single
awk
中直接执行此操作,因为您无法在shell中执行浮点运算:

curl -sI "$url" | awk -F': *' '$1=="Content-Length"{print $2/(120*1024*1024)}'
要将其放入变量中,请执行以下操作:

var=$(curl -sI "$url" | awk -F': *' '$1=="Content-Length"{print $2/(120*1024*1024)}')


curl-sI example.com | grep Content Length | cut-d''-f2 | awk'{print$1/(120*1024*1024)}
curl-sI example.com | grep Content Length | cut-d'-f2 | awk'{print$1/(120*1024*1024)}
什么是
$size
?有尾随空格吗?您是否收到任何错误,或者,
$parts
只是空的?您可以回显$size和$limit或提供URL吗?@itzhaki是的,回显$size和回显$limit提供正确的输出,$($limit/$limit))工作,但$($size/$size))和$($size/$limit))都不工作。为什么$size没有被执行?@Aaron$parts是空的。什么是
$size
?有尾随空格吗?您是否收到任何错误,或者,
$parts
只是空的?您可以回显$size和$limit或提供URL吗?@itzhaki是的,回显$size和回显$limit提供正确的输出,$($limit/$limit))工作,但$($size/$size))和$($size/$limit))都不工作。为什么$size没有被执行?@Aaron$parts是空的。我如何将它存储在变量中?例如:
varName=$(curl-sI example.com | grep Content Length | cut-d''-f2 | awk'{print$1/(120*1024*1024)}
以及如何使用$limit而不是120*1024*1024?例如:
varName=$(curl-sI example.com | grep Content Length | cut-d''-f2 | awk-v limit=$limit'{print$1/limit}')
cut
在这里都是不必要的,效率低下的,因为
awk
可以轻松地完成这一切。我如何将其存储在变量中?比如:
varName=$(curl-sI example.com | grep Content Length | cut-d''-f2 | awk'{print$1/(120*1024*1024)}
以及如何使用$limit而不是120*1024*1024?类似这样:
varName=$(curl-sI example.com | grep Content Length | cut-d'-f2 | awk-v limit=$limit'{print$1/limit})
grep
cut
在这里都是不必要的和低效的,因为
awk
可以轻松地完成这一切。我如何将其存储为变量?如何将其存储为变量?