Мне просто интересно, можно ли использовать переменные в циклах for ?? Я пробовал:
for number in { eval echo {0..$1}}
do
echo 5
done
Я хотел, чтобы он распечатал 5 раз, сколько раз я вводил в подсказку, однако он ведет себя странно, если я ввожу:
./test.sh 2
Он должен распечатать 5 два раза, но он распечатает 5 четыре раза. Может кто-то помочь мне с этим? А также почему он распечатывается 4 раза вместо 2 ??
Правка: По большей части
for number in $(seq "$2")
Работает, но если я попробую произвести с его помощью вычисления, мой код сломается:
time=1
total=5
for number in $(seq "$2")
do
echo "$time + $total" | bc
done
Дает : seq: недопустимый аргумент с плавающей запятой: '' Попробуйте 'seq --help' для получения дополнительной информации. Кто-нибудь может сказать мне, как это исправить ??
Он распечатывает 5 четыре раза, потому что { eval echo {0..2}}
приводит к четырем маркерам, разделенным пробелами {
, 0
, 1
и 2}
Если вы хотите использовать $1
в качестве конца выражения диапазона в bash, лучше использовать внешнюю команду seq
:
for number in $(seq "$1")
или использовать цикл for
в стиле C
for ((number=0; number<"$1"; number++))