Я использую завиток, чтобы проверить, могу ли я достичь определенного документа на одном из моих прокси-серверов. При проверке, является ли прокси-элемент членом балансировки нагрузки, выполняется проверка этого файла.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
в файл temp в /tmp/tmp
, а затем cat
файл, но я получаю тот же ответ. Вы можете увидеть в отладочный вывод, что $tmp
переменная, которая имеет выход curl
показывает
tmp=$'ppp\r'
вместо
tmp='ppp'
Может кто-нибудь, пожалуйста, пролить некоторый свет на эту тему и объяснить такое поведение? Заранее спасибо,
Вы добавили '-o tmp' к вашей переменной присваивания' curl' команды. Это говорит curl для отправки вывода в файл, а не для stdout. Замена команд улавливает содержимое stdout. Если вам нужно/нужно, то вы хотите использовать 'tee'. –
На самом деле это была еще одна попытка, я получаю точно такой же ответ, когда не использую переключатель «-o». –
Вы уверены, что сервер дает вам последовательные результаты? Потому что если команда curl отправляет строку в stdout, то подстановка команды будет ее улавливать. –