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 bcache
y dm-cache
(, que generalmente se administran usando las herramientas de espacio de usuario lvmcache
).
Вы можете использовать &&
и оператор:
#! /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
...
^
соответствует началу строки ?
делает предыдущее необязательным $
соответствует концу строки Цикл проверки ввода -и -часто записывается так:
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
Другой метод
while read -p "Overlap (LO or LDO): " overlap;
do
[[ "$overlap" =~ ^LD?O$ ]] && break || echo "Not LO or LDO"
done