я прочитал этот StackOverflow вопрос ...Баша целое и в диапазоне
Bash: check user input is correct
, который делает большую часть того, что я хочу, однако, а затем проверить это просто целое число, мне нужно проверить это целое в переменном диапазоне ....
скрипт ищет файлы в каталоге, а затем присваивает номер их ...
- Файл 1
- Файл 2
- Файл 3 и т.д ....
Пользователь выбирает номер и сценарий затем выполняют команды против этого файла ..... переменный $ FILELIST является общим количеством файлы.
Принимая пример из предыдущего StackOverflow я попробовал .....
FILENUM=""
while [[ ! ($FILENUM =~ ^[0-$FILELIST]+$) ]]; do
echo " "
echo "Please enter the file number: "
read -p "1 - $FILELIST" FILENUM < /dev/tty
done
echo "$FILENUM"
Однако это бросает ошибку синтаксиса: неожиданный «(» (ожидающий «делать») в то время как линии, и я» м не знаю, почему, я подозреваю, что $ FILELIST должен быть каким-то образом в квадратные скобки, но объяснение, почему вышеупомянутые работы помогло бы мне понять проблему
Благодаря
Я должен добавить это i s в оболочке busybox, так что это может быть проблемой? – user2109420
Хмм, как первый комментарий, регулярное выражение '^ [0- $ FILELIST] + $', вероятно, не то, что вы хотите. Скажем, '$ FILELIST' равно 100, тогда регулярное выражение'^[0-100] + $ ', которое будет соответствовать только числам с 0 и 1 в них, в отличие от чисел от 0 до 100 ... –
Я попытался изменить line, чтобы проверить переменную 0-9 (заменив $ FILELIST на 9), и она выдает ту же ошибку, поэтому я начинаю думать, может быть, это ограничение busybox? – user2109420