Porovnať čísla v škrupine

0

Otázka

Problémy porovnanie 2 response kódy v shell. Bežecká curl a je potrebné overiť, či odpoveď je medzi 200 a 400. Tiež, tam je šanca odpoveď, že "000" keď je server nedostupný.

#!/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 : chyba syntaxe vo výraze (chyba token "400 || 200 -lt 200 || 000 -ge 400 || 000 -lt 200 ")

Ak zmením držiakmi na [[...]] to vždy vráti true. Ak zmením -lt do < a -ge k >= dostať nasledujúce chybové hlásenie:

((: 200 = 400 || 200 < 200 || 000 = 400 || 000 < 200 : pokus o priradenie mimo premennej (chyba token je "= 400 || 200 < 200 || 000 = 400 || 000 < 200 ")

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

Najlepšiu odpoveď

3

Nesprávne operátora. Správny spôsob písania je:

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

Nie je potrebné explicitne s presmerovaním $, als dlho, ako je zabezpečené, že váš premenných obsahuje len celé čísla.

2021-11-23 14:23:27

((: response1 400 || response1 < 200 || response2 400 || response2 < 200 : chyba syntaxe vo výraze (chyba token je "400 || response1 < 200 || response2 400 || response2 < 200 ")
Mykyta Shvets

Čo získate, keď budete robiť echo $BASH_VERSION len v prednej časti if vyhlásenie?
user1934428

@MykytaShvets chybové hlásenie, vám chýba na > operátor v response1 > 400 a response2 > 400 časti prejavu.
Gordon Davisson

Vďaka, po spustení v inom prostredí s príslušnými verzia bash - to funguje
Mykyta Shvets
1

Prosím, skúste:

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

V iných jazykoch

Táto stránka je v iných jazykoch

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