我对脚本的一部分存在问题,该脚本试图在格式化之前检查附加卷是否已被格式化。
如果使用 nvme 卷,则此检查中使用的 grep 如果卷未格式化,则返回零。这是因为 file -s 的输出似乎是一串长字符:
Xs\333d8\374R\352if\253w}$\014\246E\034_I\275\304\2505!\3536U\336\252\274\252\323K\345\334\225;\356\0075T\350ru\003Kwp\353v:\326\263a\251\307\/\001Db\216
因此,grep count 返回零,并且脚本假定磁盘已被格式化,因为 if 语句假定如果计数为零,则它一定已经被格式化。
当前检查的是输出是否为零:
file -s /dev/nvme | grep -c ': data$'
我想知道是否可以安全地使用 blkid,但请检查以确保它大于零而不是零,以确定卷是否已格式化:
blkid | grep -c /dev/nvme
答案1
您可以检查特定设备的详细信息并据此采取行动:
blkid --match-token TYPE=ext4 /dev/nvme123 || mkfs.ext4 -m0 /dev/nvme123
这样做的目的是:
blkid
检查是否/dev/nvme123
格式化ext4
,如果没有,则返回非零返回码。- 双管道仅当第一个命令返回非零时才
||
运行第二个命令 ( )。如果第一个命令返回,则不会运行 mkfs。mkfs.ext4
0
希望有帮助:)
答案2
尝试下面的方法
# for type in ext4 ext3 ext2 iso9660;do [[ `blkid |grep /dev/vdc|awk '{print $NF}'` =~ TYPE=\"$type\" ]] && echo matched ;done
输出
matched
列出预期的文件系统类型并检查是否匹配,标记它并用于进一步处理。