Проверка ввода до выполнения цикла «for»

есть ли способ проверить или протестировать ввод из «прочитанного» в отношении «цикла»?

Я не хочу, чтобы оператор case выполнял там какой-либо вход, неверен. На данный момент он будет циклически проходить, выводя * * ветку несколько раз, все еще выполняя правильные входы.

Пример:

echo "Select Your Options (Seperated by spaces): 1 2 3" read SELECTION # Test SELECTION here? Then exit if fail? IE, if a 4 is entered. for INPUT in $SELECTION; do case $INPUT in 1 ) echo "you selection option 1" ;; 2 ) echo "you selection option 2" ;; 3 ) echo "you selection option 3" ;; * ) echo "Check your selection. Anything outside the following will make this fail: 1 2 3 " RETVAL=1 exit ;; esac done 

2 Solutions collect form web for “Проверка ввода до выполнения цикла «for»”

Как это?

 rpt=0 until [ 5 -le "$((rpt+=1))" ] && unset rpt printf '\nSelect your Options:(1|2|3): ' >&2 read SELECTION && case $SELECTION in (*[!123\ ]*|*[123][123]*|'') ! : esac do : "${rpt?too many loops!}" echo >&2 \ "Check your selection. Anything outside the following will make this fail: 1 2 3 " done for INPUT in $SELECTION do case $INPUT in (1) echo "you selection option 1" ;; (2) echo "you selection option 2" ;; (3) echo "you selection option 3" ;; esac done 
 #!/usr/bin/env bash echo "Select Your Options (Seperated by spaces): 1 2 3" read selection #exit(1) unless every component of $selection is one of 1, 2, or 3 set -f #to supress glob expansion for input in $selection; do case "$input" in 1);; 2);; 3);; *) exit 1;; esac done for input in $selection; do case "$input" in 1 ) echo "you selection option 1" ;; 2 ) echo "you selection option 2" ;; 3 ) echo "you selection option 3" ;; esac done 
  • Что означает это $ {@: 2} в сценариях оболочки
  • Найдите шаблон в файле и переместите его в новые файлы по одному
  • Ошибка Bash в DD-wrt
  • Как заставить мой скрипт bash создать файл журнала для clamscan, выполняющегося в cron?
  • Количество переадресаций HTML из cURL
  • Скрипт автоматической установки среды
  • Как написать вывод на экран из службы systemd во время загрузки?
  • Необходимо получить выход Awk в определенной последовательности
  • Как сделать bash glob строковой переменной?
  • Подкатегории MV на один уровень, но не root
  • заголовок сценария оболочки для лучшей совместимости
  • Interesting Posts

    `file` не показывает правильный тип mime для файлов .m2ts

    загружать и загружать файлы с сервера без указания пароля

    Ищете небольшой дистрибутив (для установки автоматически, с g ++ и javac)

    Linux: изменение разрешений – на устройстве нет места

    Нужна помощь для решения проблемы обхода экрана для просроченной учетной записи пользователя

    Нет Wi-Fi на CentOS 7

    Как я могу защитить метки SELinux от изменения?

    Скопируйте файлы из каталога, если имя присутствует в текстовом файле

    Почему wc -l говорит мне, что этот непустой файл имеет 0 строк?

    Как восстановить доступ к Интернету? ТОЛЬКО программа, которая по-прежнему пользуется Интернетом – это разнообразие (приложение для обоев)

    Gunzip в диапазоне файлов

    Копирование из linux в windows каждую минуту

    Как предотвратить доступ к жесткому диску во время работы Live-CD?

    вход и выход grub-mkfont formtas

    Определение архива / пакета из строки `deb`

    Linux и Unix - лучшая ОС в мире.