Друзья, всем привет!
Сразу напишу, что не силен в написании скриптов на bash, но возникла такая необходимость.
Прилагаю простенький пример:
# !/bin/sh
res=$(curl -Isk https://........./api/rest.php | head -n 1 | sed 's/\r//g')
res_string="HTTP/1.1 200 OK"
if [ "$res"="$res_string" ]
then
service nginx status && service httpd status
else
echo "CANSEL"
fi
Проблема в том, что при выполнении проверка всегда выдает истину даже если изменить строку проверки.
Я всю голову сломал, но никак не могу понять причину данного поведения.
Подскажите куда копать.
UPD:
При тестировании через bash -x получаю следующий вывод:
bash -x script.sh
++ curl -Isk https://...../api/rest.php
++ head -n 1
++ sed 's/\r//g'
+ res='HTTP/1.1 200 OK'
+ res_string='HTTP/1.1 200 OK'
+ '[' 'HTTP/1.1 200 OK=HTTP/1.1 200 OK' ']'
+ service nginx status
nginx (pid 17277) is running...
+ service httpd status
httpd (pid 17321) is running...
Если res_string поменять на любое значение то все равно будет истина.
Для наглядности:
bash -x script.sh
++ curl -Isk https://......./api/rest.php
++ head -n 1
++ sed 's/\r//g'
+ res='HTTP/1.1 200 OK'
+ res_string='38942983478239423олвыалодлаывдHTTP/1.1 200 OK'
+ '[' 'HTTP/1.1 200 OK=38942983478239423олвыалодлаывдHTTP/1.1 200 OK' ']'
+ service nginx status
nginx (pid 17277) is running...
+ service httpd status
httpd (pid 17321) is running...