我的curl
两个盒子有问题。在大约两打 Linux 安装中,我对在curl --connect-timeout
.
示例命令curl --connect-timeout 3.14 https://example.com
仅在我的两台机器上失败,这是我唯一的桌面,我唯一的 Kubuntu 安装。其余的主要是 Ubuntu Server 和几个 Debian 安装,都是无头的。
这两个 Kubuntu 桌面版本不同,一个是升级的 22.04 LTS 版本,另一个是 20.04 LTS 版本。
Kubuntu 22.04 有curl --version
一个
curl 7.81.0 (x86_64-pc-linux-gnu) libcurl/7.81.0 OpenSSL/3.0.2 zlib/1.2.11 brotli/1.0.9 zstd/1.4.8 libidn2/2.3.2 libpsl/0.21.0 (+libidn2/2.3.2) libssh/0.9.6/openssl/zlib nghttp2/1.43.0 librtmp/2.3 OpenLDAP/2.5.13
Release-Date: 2022-01-05
Kubuntu 20.04 有curl --version
一个
curl 7.68.0 (x86_64-pc-linux-gnu) libcurl/7.68.0 OpenSSL/1.1.1f zlib/1.2.11 brotli/1.0.7 libidn2/2.2.0 libpsl/0.21.0 (+libidn2/2.2.0) libssh/0.9.3/openssl/zlib nghttp2/1.40.0 librtmp/2.3
Release-Date: 2020-01-08
为了比较,一个工作的 Ubuntu Server 20.04 有curl --version
一个
curl 7.68.0 (x86_64-pc-linux-gnu) libcurl/7.68.0 OpenSSL/1.1.1f zlib/1.2.11 brotli/1.0.7 libidn2/2.2.0 libpsl/0.21.0 (+libidn2/2.2.0) libssh/0.9.3/openssl/zlib nghttp2/1.40.0 librtmp/2.3
Release-Date: 2020-01-08
这与 Kubuntu 20.04 的输出相同curl --version
。
所以服务器也安装了这些版本,但小数秒工作正常。
两者curl --manual
都会产生以下 grepped 结果:
~ curl --manual | grep -e "--connect-timeout"
--connect-timeout <fractional seconds>
curl --connect-timeout 20 https://example.com
curl --connect-timeout 3.14 https://example.com
See also --connect-timeout. Added in 7.47.0.
See also -m, --max-time and --connect-timeout. Added in 7.59.0.
See also --connect-timeout.
(在 20.04 上有点不那么冗长)所以两者都在能够处理小数的要求版本之内。
是什么原因造成的?
另一个观察结果:我md5sum
在 Kubuntu 20.04 和 Ubuntu 20.04 盒子上做了一个,两者都返回相同的散列:
c337f891e41007612076a3bc43284aa7 /usr/bin/curl
所以可执行文件应该是相同的。
which curl
/usr/bin/curl
在两台机器上都返回。
(同样适用于 22.04 版本4b7b5099e836abd910f580808adc0874 /usr/bin/curl
)
会不会是环境造成的?如何?
在所有情况下,我都使用bash
和进行了检查zsh
。
该
curl
程序似乎是区域设置感知的,这意味着字符串到数字的转换将取决于以下LC_NUMERIC
值特别是,在
de_DE.UTF-8
语言环境中,小数点字符是,
和.
是千位分隔符:因此,在这个语言环境中,
3.14
确实不是“适当的数值参数”——它需要写成3,14
. 所以然而