Проверка, является ли переменная числом меньше заданного числа или равна тексту "QUIT"

Вы можете использовать поиск apt-cache . Например, для поиска в firefox:

apt-cache search firefox

Это соответствующий фрагмент из man 8 apt-cache :

   search regex [ regex ... ]
       search performs a full text search on all available package lists 
       for the POSIX regex pattern given, see regex(7). It searches the 
       package names and the descriptions for an occurrence of the regular
       expression and prints out the package name and the short description, 
       including virtual package names. If --full is given then output 
       identical to show is produced for each matched package, and if 
       --names-only is given then the long description is not searched, 
       only the package name is.

       Separate arguments can be used to specify multiple search patterns 
       that are and'ed together.
2
29.09.2018, 17:28
3 ответа

Следующий код будет зацикливаться до тех пор, пока ВЫБОР не равен "ВЫХОД" или целое число меньше ЧИСЛА:

NUMBER=22
while :; do
    read CHOICE
    case $CHOICE in
        QUIT) break;;
        *[!0-9]*|'') ;;
        *) test "$CHOICE" -lt "$NUMBER" && break;;
    esac
done

Если вы также хотите, чтобы цикл завершался, когда пользователь вводит ^D, вы должны поставить readв качестве условия цикла:while read CHOICE; do case $CHOICE....

2
27.01.2020, 22:02

Вам может понадобиться дополнительный тест для альфа-символов, например

while [ "$CHOICE" != "QUIT" ] && { [ "${CHOICE//[[:alpha:]]}" != "$CHOICE" ] || [ "$CHOICE" -gt 10 ]; }
  do    read CHOICE < /dev/tty
  done
0
27.01.2020, 22:02

Настройки ответаmosvy :

NUMBER=22
while read CHOICE ; do
  case "${CHOICE}" in
        QUIT)   break ;;
    *[!0-9]*)   ;;
          ?*)   [ "${CHOICE}" -lt $NUMBER ] && break ;;
  esac
done
  • Не помещайте readв цикл.
  • Нет необходимости инициализировать $CHOICEи
  • изменил *)на ?*), сделав одним менее условным--mosvy |''может просто провалиться.
1
27.01.2020, 22:02

Теги

Похожие вопросы