Értem, hogy megvan a megoldás, de meg tudnád mutatni azt, ahol az a if (( .. )) hibát dob? Meg pl. azt, hogy mi a hozzá tartozó input - amitől hibaüzenetet generál.. Csak mert szerintem pl. már ez se jó:
number_check=$(echo "${choice}" | grep -E '^[0-9]{2}|0')
Ha a grep minta végére raknál egy $-jelet, akkor még csak érteném, de így 12v -t szó nélkül benyeli - majd ez után tényleg kapok egy hibát. Vagy ha a grep-nek odaadnád a -o opciót, hogy csak a mintára illeszkedő eredményt írja ki, ne a teljes sort, ahol van illeszkedés.