我创建了以下脚本,但如果系统上有扩展分区,它会挂起。 Mount尝试挂载扩展分区当然不起作用。
如果扩展分区,如何从循环中删除分区?
for i in hda hdb hdc hdd hde hdf sda sdb sdc sdd sde sdf sdg sdh sdi ; do
fdisk -l /dev/$i > /tmp/mnt.txt
cat /tmp/mnt.txt | grep "Disk" 1>/dev/null && { echo -n "controle harddisk $i: "
found=0
for j in 1 2 3 4 5 6 7 8 9 ; do
cat /tmp/mnt.txt | grep "$i$j" 1>/dev/null && { echo -n "$i$j " ;
found="1";
mkdir /media/$i$j 2>/dev/null
mount /dev/$i$j /media/$i$j 2>/dev/null
# test voor /C
if [ -d "/media/$i$j/Program Files" ] ; then
umount /media/$i$j
mount /dev/$i$j /C
echo -n "(/C) "
fi
# test voor /B
if [ -d /media/$i$j/Boot ] ; then
umount /media/$i$j
mount /dev/$i$j /B
echo -n "(/B) "
fi
# test voor /herstel
if [ -f /media/$i$j/partimage ] || [ -f /media/$i$j/fsarchiver ] || [ -d /media/$i$j/lost+found ] ; then
umount /media/$i$j
mount /dev/$i$j /herstel
echo -n "(/herstel) "
fi
# test voor /G
if [ -d /media/$i$j/herstel ] ; then
umount /media/$i$j
mount /dev/$i$j /G
echo -n "(/G) "
fi
}
done
if [ "$found" == "0" ] ; then echo "(geen partities)"; else echo ""; fi
}
完成 DF
答案 0 :(得分:1)
要简单回答您的问题,您可能只想在第二次grep -v "Linux extended"
调用中添加另一个grep
- 这应该过滤掉包含扩展权限的行。
根据您打算运行它的位置以及您希望分发它的范围,我还建议考虑设计并添加更“正”的匹配标准(例如,只安装给定类型的分区,没有具体排除那些没有(例如你的例子中的交换分区怎么样?),这将是更安全的方法。
答案 1 :(得分:0)
如果我理解良好,扩展意味着逻辑分区,就像在这个图像(是sda2)
我通常通过检查/ sys / class / block / sd $ i $ j / size中的大小来做 如果它大于100意味着它是非逻辑分区
if [ `cat /sys/class/block/sd$i$j/size` -gt 100 ]; then
echo "sd$i$j it's extended"
fi
:) Adonay