1
我正在使用curl来检查我是否可以在我的某个代理服务器上访问特定文档。 当检查代理是否是负载均衡器的成员时,将根据此文件进行检查。Curl:返回奇怪的输出比预期,但为什么?
实施例:
[[email protected] scripts]# curl http://`hostname`:8080/proxy/keepalive?file=/workspace/temp/1.txt
ppp
[[email protected] scripts]#
该输出意。
如果我试图比较这些输出,测试是假的:
#!/bin/bash
tmp=$(curl http://$(hostname):8080/proxy/keepalive?file=/workspace/temp/1.txt)
echo $tmp
if [ "$tmp" = "ppp" ]; then
echo "Match"
else
echo "No match"
fi
我使用调试模式(bash -x
)运行脚本:
[[email protected] scripts]# bash -x testscript
+++ hostname
++ curl 'http://XXXXX.com:8080/proxy/keepalive?file=/workspace/temp/1.txt'
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 5 0 5 0 0 2326 0 --:--:-- --:--:-- --:--:-- 5000
+ tmp=$'ppp\r'
+ echo $'ppp\r'
ppp
+ [[ $'ppp\r' = ppp ]]
+ echo 'No match'
No match
[[email protected] scripts]#
我也试着写的curl
输出到临时文件/tmp/tmp
,然后cat
该文件但我得到相同的响应。您可以在调试输出看到$tmp
变量,其持有的curl
输出显示的
tmp=$'ppp\r'
代替
tmp='ppp'
任何人都可以请流下了关于这个问题的一些轻和解释这种现象? 在此先感谢,
你加入'-o tmp'你的变量赋值'curl'命令。这告诉curl将输出发送到文件而不是stdout。命令替换捕获标准输出内容。如果你需要/希望你想用'tee'。 – 2014-10-28 15:43:12
这实际上只是另一个尝试,当不使用'-o'开关时,我会得到完全相同的响应。 – 2014-10-28 15:44:49
你确定服务器给你一致的结果吗?因为如果curl命令向stdout发送一个字符串,那么命令替换就会捕获它。 – 2014-10-28 15:46:42