Tôi có một danh sách các đĩa scsi mà tôi cần phải loại bỏ. Danh sách này được coi là ngẫu nhiên tốt nhất và thay đổi theo thời gian. Tôi muốn xóa mọi thứ trừ một danh sách được xác định trước mà tôi đã tạo. Bây giờ hãy giả sử rằng tôi chỉ muốn giữ:
/dev/sda
/dev/sdb
Lệnh tôi cần thực thi là:
"echo 1 > /sys/block/sdX/device/delete"
Trong đó X là thiết bị cần loại bỏ.
Tôi không giỏi bash scripting nên tôi thực sự không biết bắt đầu từ đâu.
Để tóm tắt lại vì vậy tôi không nhận được DV'd vì không rõ ràng.
Tôi cần "echo 1> / sys / block / sdX / device / xóa" cho mọi thiết bị sdX trên hệ thống ngoại trừ danh sách được xác định trước.
EDIT: Sau câu trả lời dưới đây, đây là những gì tôi đã quyết định sử dụng. "LocalDisks.txt" phải chứa các dòng như "/ 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