У меня есть список дисков SCSI, которые мне нужно удалить. Список считается случайным в лучшем случае и меняется время от времени. Я хочу удалить все, кроме предварительно определенного списка, который я создал. Давайте пока предположим, что я хочу сохранить только:
/dev/sda
/dev/sdb
Команда, которую мне нужно выполнить:
"echo 1 > /sys/block/sdX/device/delete"
Где X - устройство, которое нужно удалить.
Я плохо разбираюсь в bash-скриптах, поэтому не знаю, с чего начать.
Напомним, что я не получаю DV из-за неясности.
Мне нужно "echo 1> / sys / block / sdX / device / delete" для каждого устройства sdX в системе, за исключением предварительно определенного списка.
РЕДАКТИРОВАТЬ: После ответа ниже, это то, что я решил использовать. «LocalDisks.txt» должен содержать строки типа «/ dev / sda»
#!/bin/bash
exclude=$(cut -d/ -f3 LocalDisks.txt)
for sysfile in /sys/block/sd* ; do
dev=$(basename $sysfile)
del=$sysfile/device/delete
if [[ $exclude == *$dev* ]] ; then
echo "Device $dev excluded"
elif [ ! -w $del ] ; then
echo "$del does not exist or is not writable"
else
echo 1 > $del
fi
done
источник