[...]
обозначает набор символов, где тире можно использовать для указания диапазона символов. Например, [4-6u-z]
в регулярном выражении означает один из символов 4,5,6, u, v, w, x, z. Ваше выражение [1-200]
просто соответствует символам (цифрам) 0, 1 и 2.
В таком случае я бы сделал два шага: сначала извлеки из вашей строки начальные числовые части, а затем использую арифметическое сравнение результатов. Например (не проверено!):
if [[ $i =~ ^-?[0-9]+ ]]
then
intval=${BASH_REMATCH[0]}
if (( intval >= -200 && intval <= 1000 ))
then
....
См. Справочную страницу bash для объяснения массива BASH_REMATCH .