вы действительно используете оболочку bash.Не все оболочки (особенно true / bin / sh (bourne)) поддерживают эту функцию.Чтобы устранить неоднозначность в вашей ситуации, используйте
#!/bin/bash
в верхней части вашего сценария.
Одно из решений заключается в использовании
for i in $(eval echo {1..$1} ); do echo $i; done
eval
говорит "длятекущая командная строка, в данном случае echo ${1..$1}
, пока не выполняйте команду, переоцените полную командную строку для любых расширяемых переменных. "
Если в вашей системе есть seq
cmd, то выможет переписать это, поскольку
for i in $(seq 1 $1 ); do echo $i; done
seq
является сокращением от последовательности и может принимать любое начальное и конечное число, а необязательный коэффициент «пропустить по», sa seq 0 5 100
будет считать от 5 до 100.
Надеюсь, это поможет.