Используя пользовательский ввод, чтобы определить, сколько раз цикл for повторяется

Мне трудно получить цикл for для ввода пользовательского ввода в форме аргумента функции, которую я создал.

#!/bin/bash number1="$1" #Assume user input 5 loops="$2" #Assume user input 5 if [[ ${number1} && ${loops} =~ ^-?[0.00-9.99]+$ ]];then for number2 in {1..${loops}} do Product=$(echo "${number1} * ${number2}" | bc -l) echo "${number1} * ${number2} = ${Product}" if test ${number2} -eq 7;then { echo "----------------------"; echo "${number2} is the best number."; echo "----------------------"; continue; } elif test ${number2} -eq 11;then { echo "------------------------------"; echo "${number2} is pretty awesome as well."; echo "------------------------------"; continue; } fi done else { echo "Please try again with a valid numerical entry."; exit 1; } fi 

Этот скрипт не запускается, когда пользователь вводит целое число для переменной «петли» и любое число для «number1». число1 = 5 в этом случае. Он возвращает ошибку:

(standard_in) 1: синтаксическая ошибка

5 * {1..5} =

/home/$USER/For_Loop_Multiplication.sh: строка 9: test: {1..5}: ожидается целочисленное выражение

/home/$USER/For_Loop_Multiplication.sh: строка 11: test: {1..5}: ожидается целочисленное выражение

Если я вместо этого напрямую ввожу конечную привязку числа циклов непосредственно в скрипт следующим образом, а number1 = 5, он работает нормально:

 #!/bin/bash number1="$1" #Assume user input 5 if [[ ${number1} =~ ^-?[0.00-9.99]+$ ]];then for number2 in {1..5} do Product=$(echo "${number1} * ${number2}" | bc -l) echo "${number1} * ${number2} = ${Product}" if test ${number2} -eq 7;then { echo "----------------------"; echo "${number2} is the best number."; echo "----------------------"; continue; } elif test ${number2} -eq 11;then { echo "------------------------------"; echo "${number2} is pretty awesome as well."; echo "------------------------------"; continue; } fi done else { echo "Please try again with a valid numerical entry."; exit 1; } fi 

Он возвращает результат:

5 * 1 = 5

5 * 2 = 10

5 * 3 = 15

5 * 4 = 20

5 * 5 = 25

По сути, я думаю, что сценарий, кажется, помещает весь диапазон как значение number2, которое определяется как итератор в цикле for. Поскольку вход для переменной «петли» является целым числом, не должно быть разницы между запросом пользователя на диапазон и помещением его в цикл или просто установкой его по умолчанию при написании сценария. Однако, по-видимому, существует разница … Любое понимание решения этой проблемы приветствуется. Благодарю.