因此,我正在编写一个脚本,主要检查磁盘是否已添加到系统中,如果是,则对其执行某些操作(例如格式化磁盘或其他操作)。
所以,主要问题是......我如何列出没有任何分区的磁盘(或开发)?
我可以列出它们:
fdisk -l | grep -o '/dev/sd[a-z][0-5]'
/dev/sda1
/dev/sda2
/dev/sda5
/dev/sdb1
如何列出没有分区的磁盘?我尝试过这样的事情:
# fdisk -l | grep -o '/dev/sd[a-z][^0-5]'
/dev/sda:
/dev/sdb:
/dev/sdc:
但我仍然得到像 sda 和 sdb 这样有分区的磁盘。我只是想选取sdc
唯一一个没有分区且未在系统上使用的分区。我想这样做的原因是这样我可以将它放在 bash 脚本中。
答案1
一个肮脏的快速循环正在执行此操作:
#!/bin/bash
# get all disks into an array
disks=($(ls /dev/sd* | grep -v '[0-9]'))
# loop over disks in array
for i in $(echo ${disks[@]}); do
# check if it has a partition
diskcheck=$(ls ${i}* | grep '[0-9]')
# if not, print it
if [ -z "$diskcheck" ]; then
echo $i
fi
done