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