Compara numere în coajă

0

Problema

Probleme compararea 2 coduri de răspuns în coajă. Execută ondularea și necesitatea de a valida dacă răspunsul este între 200 și 400. De asemenea, există o șansă de răspuns să fie "000" atunci când un server este în jos.

#!/bin/sh
response1="200" #curl first url
response2="000" #curl second url

if (( $response1 -ge 400 || $response1 -lt 200 || $response2 -ge 400 || $response2 -lt 200 )) ; then
  echo "Something went wrong, response code is not in success range"
  exit 1
else
  echo "Success"
  exit 0
fi

((: 200 -ge 400 || 200 -lt 200 || 000 -ge 400 || 000 -lt 200 : eroare de sintaxă în expresia (eroare token este "400 || 200 -lt 200 || 000 -ge 400 || 000 -lt 200 ")

Dacă am schimba paranteze la [[...]] se întoarce întotdeauna adevărat. Dacă am schimba -lt să < și -ge la >= primesc urmatoarea eroare:

((: 200 = 400 || 200 < 200 || 000 = 400 || 000 < 200 : tentativa la non-variabile (eroare token este "= 400 || 200 < 200 || 000 = 400 || 000 < 200 ")

bash linux numbers script
2021-11-23 13:18:34
2

Cel mai bun răspuns

3

Greșit operator. Modul corect de a scrie este:

if (( response1 > 400 || response1 < 200 || response2 > 400 || response2 < 200 )) ; then

Nu este nevoie pentru a în mod explicit dereference cu $, als timp cât se asigură că variabilele conțin doar numere întregi.

2021-11-23 14:23:27

((: response1 400 || response1 < 200 || response2 400 || response2 < 200 : eroare de sintaxă în expresia (eroare token este "400 || response1 < 200 || response2 400 || response2 < 200 ")
Mykyta Shvets

Ce obții atunci când face o echo $BASH_VERSION doar în fața if declarație?
user1934428

@MykytaShvets De mesaj de eroare, vă lipsesc > operator în response1 > 400 și response2 > 400 piese de exprimare.
Gordon Davisson

Multumesc, după care rulează în alt mediu adecvat bash versiune - aceasta funcționează
Mykyta Shvets
1

Vă rugăm să încercați cu:

if [ $response1 -ge 400 ] || [ $response1 -lt 200 ] || [ $response2 -ge 400 
 ] || [ $response2 -lt 200 ] ; then
  echo "Something went wrong, response code is not in success range"
  exit 1
else
  echo "Success"
  exit 0
fi
2021-11-23 13:24:09

În alte limbi

Această pagină este în alte limbi

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................