cls='],_[:alnum:]!^`@{}=().;/~|[-'
while getopts : na "-$str"
do case $OPTARG in ([!$cls])
printf %s\\n "$OPTARG"
esac
done
Синтаксический анализатор параметров getopts
оболочки работает, итеративно удаляя строковый символ за символом и присваивая его последний вырезанный символ переменной оболочки. Итак, если вы хотите разделить строку, getopts
может сделать это довольно удобным. Все, что вам нужно сделать после этого, - это проверить символ текущей итерации на валидность . Если он совпадает, оставьте его в покое, но, если !
нет, printf
ит.
Я не очень хорошо знаком с lvmcache, но двойная запись данных во флэш-память определенно не повышает производительность. Это удвоит накладные расходы на запись для флэш-памяти. Использование внешнего журнала позволит вам иметь высокую скорость записи синхронизации с данными = журнал, и это уже скрывает задержку от жесткого диска/RAID.
Если вы можете настроить lvmcache для кэширования только прочитанных данных, это дополнит журнал данных.