Как добавить оператор if then к значению с несколькими аргументами, используя bash - PullRequest
0 голосов
/ 04 сентября 2018

Я храню 2 значения в моем местоположении TMP: {time_total} и {http_code}

Я хочу добавить условие if-then, которое проверяет статус. Если это что-то отличное от 100, я хочу, чтобы оно распечатало строку с надписью «что-то не так». Но ничего не отображается, если значение равно 100.

echo getInfo  >> $SAVE_TO
for i in "${LB[@]}"
   do
        TMP=$(curl  -X GET -sS -w "%{time_total},%{http_code}\n" -H "UNAME:  
$USER" -H "UPASS: $PWD" -H "Content-Type: application/json"  -d '{"propertytosearch":"systemUserName", "systemUserName":"XXXXXXX"}' https://$i/ws/rest/v2/getInfo -o /dev/null)
        echo ,$i,$TMP >> $SAVE_TO
   done

if [[ $http_code != $200 ]]
then
 echo "something wrong with $i"
fi

TMP Выход:

1.207,100

Если я удаляю %{time} и использую только %{status}, команда if-then работает. Как бы я сделал это для 2 входных значений?

Мне не обязательно проверять {time}, но при необходимости у меня может быть условие if для времени, которое проверяет что-либо больше 4.000. У него может быть то же эхо, что «что-то не так».

Ответы [ 2 ]

0 голосов
/ 04 сентября 2018

Чтобы прочитать time и status в двух отдельных переменных, вы можете сделать следующее:

IFS=, read -r time status < <(curl  -X GET -sS -w "%{time},%{status}\n" -H)

... после этого вы можете проверить их индивидуально:

if [[ $status != 100 ]]; then  # note that $status is safe unquoted only in [[ ]], not [ ]
  echo "Something is wrong"
fi
0 голосов
/ 04 сентября 2018

Вы можете оценить каждый «элемент» индивидуально, как это

for element in ${TMP//,/ }
do
  if [ "$element" -ne 100 ]
  then
    echo Something is wrong.
  fi
done
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...