使用 blkid 检查附加的 EBS 卷是否已格式化

ber*_*olo 1 linux amazon-web-services shell-scripting

我在尝试检查附加卷在格式化之前是否已格式化的脚本的一部分存在问题。

当使用 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 计数返回零并且脚本假定磁盘已经格式化,因为 if 语句假定如果计数为零,它必须已经被格式化。

当前检查是否为零的输出:

file -s /dev/nvme | grep -c ': data$'

我想知道我是否可以安全地使用 blkid 但检查以确保它大于零而不是零以确定卷是否已格式化:

blkid | grep -c /dev/nvme

MLu*_*MLu 5

您可以检查特定设备的详细信息并据此采取行动:

blkid --match-token TYPE=ext4 /dev/nvme123 || mkfs.ext4 -m0 /dev/nvme123
Run Code Online (Sandbox Code Playgroud)

它的作用是:

  1. blkid检查是否/dev/nvme123ext4格式化,如果不返回非零返回代码。
  2. 仅当第一个||命令mkfs.ext4返回非零时,双管道才运行第二个命令 ( )。如果第一个返回0,它将不会运行 mkfs。

希望有帮助:)