Bash脚本跳过装载扩展分区

Bash脚本跳过装载扩展分区,bash,disk-partitioning,Bash,Disk Partitioning,我创建了以下脚本,但如果系统上有扩展分区,它将挂起。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

我创建了以下脚本,但如果系统上有扩展分区,它将挂起。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

为了狭义地回答您的问题,您可能只想在第二次
grep
调用中添加另一个
grep-v“Linux extended”
——这应该过滤掉包含扩展权限的行


根据您打算在何处运行此功能以及希望将其分发到多大的范围,我还建议您考虑设计并添加一个更“积极”的匹配标准(例如,仅安装给定类型的分区,而不是专门排除不安装的分区(例如,在您的示例中交换分区如何?),这将是更安全的方法。

为了狭义地回答您的问题,您可能只想在第二次
grep
调用中添加另一个
grep-v“Linux extended”
,这应该过滤掉包含扩展权限的行


根据您打算在何处运行此功能以及希望将其分发到多大的范围,我还建议您考虑设计并添加一个更“积极”的匹配标准(例如,仅安装给定类型的分区,而不是专门排除不安装的分区(例如,在您的示例中交换分区如何?),这将是更安全的方法。

如果我理解的好,扩展意味着逻辑分区,如图中所示(是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

如果我理解为好的,扩展意味着逻辑分区,如图所示(是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刚刚在我头上挂了一个灯泡。新增:sed-i'/Extended/d'/tmp/mnt.txt。现在,所有带有“扩展”的行都被删除。这个脚本只在windows机器上使用。我头上刚挂了一个灯泡。新增:sed-i'/Extended/d'/tmp/mnt.txt。现在,所有带有“扩展”的行都被删除。该脚本仅在windows计算机上使用。