Porównaj liczby w shell

0

Pytanie

Problemy podczas porównywania 2 kody odpowiedzi w powłoce. Uruchomienie curl i należy sprawdzić, czy odpowiedź jest między 200 i 400. Ponadto, istnieje prawdopodobieństwo, że odpowiedź będzie "000", gdy serwer nie działa.

#!/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 : błąd składni w wyrażeniu (znacznik błędu "400 || 200 -lt 200 || 000 -ge 400 || 000 -200 lt ")

Jeśli zmienię nawiasy na [[ ... ]], zawsze zwraca wartość true. Jeśli zmienię-lt na < i -ge na>=, pojawi się następujący błąd:

((: 200 = 400 || 200 < 200 || 000 = 400 || 000 < 200 : próba przypisania непеременной (znacznik błędu "= 400 || 200 < 200 || 000 = 400 || 000

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

Najlepsza odpowiedź

3

Błąd operatora. Właściwy sposób pisania to:

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

Nie ma potrzeby, aby wyraźnie разыменовывать z $pod warunkiem, że twoje zmienne zawierają tylko wartości całkowite.

2021-11-23 14:23:27

((: response1 400 || response1 < 200 || response2 400 || response2 < 200 : błąd składni w wyrażeniu (znacznik błędu "400 || response1 < 200 || response2 400 || response2 < 200 ")
Mykyta Shvets

Co otrzymasz, gdy robisz echo $BASH_VERSION naprzeciwko if oświadczenie?
user1934428

@MykytaShvets Z komunikatu błędu wynika, że brakuje ci > operator w response1 > 400 i response2 > 400 części wyrażenia.
Gordon Davisson

Dziękuję, po uruchomieniu w innym środowisku z odpowiedniej wersji bash - to działa
Mykyta Shvets
1

Proszę, spróbuj z:

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

W innych językach

Ta strona jest w innych językach

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