Кстати, как у вас последние резервные копии этого НАН, я бы очень настоятельно рекомендую перестроить его как 6 зеркальные пары помощью ЛВМ рейд-1 (нет необходимости для `адреса`) один ВГ состоит из 6 рейд-1 матриц, или` ее` или даже ZFS если вы не возражаете без магистрального ядра файловой системы. В RAID1/RAID-10 это намного быстрее, прочнее, намного быстрее, скачками, и легче исправить, если что-нибудь пойдет не так. Цена, что вы получаете только 50% емкости (*н/2*), а не 75% Вы получаете теперь с 3xRAID5 (*(Н-1)/п*). Как в Btrfs и ZFS также гораздо более гибким о выделении квоты для Sub-томов. Вы бы редактировать текст, чтобы сделать его ясно, как это отличается, чем связан вопрос? Возможно, вы могли бы документально подтвердить, что "поддержка" и "подвиг" означает технически или удалить их, если они шума.

Мне нужно два способа завершить часть моей bash-скрипт.

Либо счетчик достигает заданного количества, или пользователь вручную силами сценария с тем, что текущее значение счетчика.

Конкретно - я список USB-накопители. Если есть 15 из них, функцию, которая подсчитывает их выходы и сценарий можно продолжить.

Мой код выглядит так:

scannew(){
Новый=0
СТАРЫЙ=$НОВЫЙ
 в то время как [ истинного ]; делать
 # отсчет новых дисков
 lsblk -Р > диски.новый
 дифф диски.старые диски.новый | грэп диск | вырезать -Д'- Ф 2 | сортировка > диски.все
 Новый=$(туалет, умывальник -л диски.все | вырезать -д' ' -F1)и
 Эхо -Ан "обнаружены диски: $новые \Р"
 спать 0.01
 если [ "новый" -эквалайзер "15" ]; затем # выход, если мы достигаем предела
перерыв
интернет
сделано
}

# КАКОЙ-ТО КОД...

lsblk -Р > диски.старый

scannew & # начать жить устройстве счетчик посещений в фоновом режиме
SCAN_PID=$! # помните, что это ПИД
подожди $SCAN_PID 2>/Дев/нуль # подождите, пока он умирает
эхо "это!"

# ОСТАЛЬНОЙ КОД...

Я пробовал различные вещи с читать команды, но результат, скрипт будет всегда ждать, для чтения на выходе (после нажатия Enter) и я не могу принять "15 предельное" состояние, чтобы переопределить это.

Например, я попытался с помощью чтения -т вместо сна в scannew() функции:

scannew(){
Новый=0
СТАРЫЙ=$НОВЫЙ
 в то время как [ истинного ]; делать

 # отсчет новых дисков
 lsblk -Р > диски.новый
 дифф диски.старые диски.новый | грэп диск | вырезать -Д'- Ф 2 | сортировка > диски.все
 Новый=$(туалет, умывальник -л диски.все | вырезать -д' ' -F1)и
 Эхо -Ан "обнаружены диски: $новые \Р"
 читать -Т 0.01 -1 н & и # читать вместо сна
 если [ "новый" -эквалайзер "15" ]; затем
перерыв
интернет
сделано
}

Однако - похоже, что функция подпроцесса нет доступа к почте, и с помощью чтения -Т 0.01 -Н 1 < с /dev/stdin-стандартный поток ввода && перерыв вместо того, чтобы не работать.

Как я могу сделать эту работу?