Как изменить [[ ! $number =~ ^[0-9]+$ ]] для опций слова в BASH?

mbcache no le permite almacenar en caché un dispositivo de bloque usando otro, sino que es un caché de memoria -, que se usa para acelerar el rendimiento del sistema de archivos, y los sistemas de archivos lo usan directa y automáticamente sin ninguna configuración de usuario. Al momento de escribir, solo lo usa el sistema de archivos ext4.

Los principales módulos del núcleo que hacen lo que pretendes (p. Los dispositivos de bloqueo lento de caché que usan los rápidos )son ​​bcachey dm-cache(, que generalmente se administran usando las herramientas de espacio de usuario lvmcache).

0
15.06.2019, 23:43
3 ответа

Вы можете использовать &&и оператор:

#! /bin/bash
overlap=""
first=1
while [[ $overlap != LO && $overlap != LDO ]] ; do
    if [[ ! $first ]] ; then
        echo 'Wrong answer, please answer LO or LDO!' >&2
    fi
    read -p 'Overlap (LO or LDO): ' overlap
    unset first
done

Вы также можете использовать регулярное выражение:

until [[ $overlap =~ ^LD?O$ ]] ; do
   ...
  • ^соответствует началу строки
  • ?делает предыдущее необязательным
  • $соответствует концу строки
1
28.01.2020, 02:22

Цикл проверки ввода -и -часто записывается так:

while true; do
    read -p 'Overlap (LO or LDO): ' overlap

    case $overlap in
        LO|LDO) # ok
            break
            ;;
        *) # not ok
            echo 'Please enter LO or LDO' >&2
    esac
done

То есть у вас есть бесконечный цикл, из которого вы выходите, когда подтверждаете, что ответ правильный.

Очевидно, вы также можете сделать это как

while true; do
    read -p 'Overlap (LO or LDO): ' overlap

    if [ "$overlap" = LO ] || [ "$overlap" = LDO ]; then
        # ok
        break
    fi
    # not ok
    echo 'Please enter LO or LDO' >&2
done

Или с оболочкой, имеющейselect:

echo 'Select overlap:' >&2
select overlap in LO LDO; do
    case $REPLY in
        [12]) # ok
            break
            ;;
        *) # not ok
            echo 'Please select LO or LDO' >&2
    esac
done
2
28.01.2020, 02:22

Другой метод

while read -p "Overlap (LO or LDO): " overlap;
do
 [[ "$overlap" =~ ^LD?O$ ]] && break || echo "Not LO or LDO"
done
0
28.01.2020, 02:22

Теги

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