该 Bash 脚本旨在获取系统中所有未挂载的磁盘信息,并将其存储在一个数组中。

脚本代码:

#!/bin/bash

disks=()
while IFS= read -r line; do
  disk=$(echo '$line' | awk '{print $1}')
  size=$(echo '$line' | awk '{print $2}')
  if [ -z "$(lsblk '/dev/$disk' -n -o MOUNTPOINT)" ]; then
    disks+=('$disk $size')
  fi
done < <(lsblk -d -o NAME,SIZE -n)

脚本解析:

  1. #!/bin/bash: 指定使用 Bash 解释器执行脚本。

  2. disks=(): 初始化一个名为 disks 的空数组,用于存储未挂载磁盘信息。

  3. while IFS= read -r line; do: 开始循环读取标准输入 (stdin) 中的每一行,并将每一行赋值给变量 line

  4. disk=$(echo '$line' | awk '{print $1}'): 使用 awk 命令提取当前行中的第一个字段,并将该字段赋值给变量 disk,表示磁盘名称。

  5. size=$(echo '$line' | awk '{print $2}'): 使用 awk 命令提取当前行中的第二个字段,并将该字段赋值给变量 size,表示磁盘大小。

  6. if [ -z "$(lsblk '/dev/$disk' -n -o MOUNTPOINT)" ]; then: 检查当前磁盘的挂载点是否为空。通过使用 lsblk 命令列出磁盘的挂载点,并检查输出是否为空来实现。如果输出为空,则表示该磁盘当前未挂载,其信息将被添加到 disks 数组中。

  7. disks+=('$disk $size'): 将当前磁盘的信息(名称和大小)追加到 disks 数组中。

  8. done < <(lsblk -d -o NAME,SIZE -n): 结束循环,并将 lsblk 命令的输出(列出所有可用块设备的名称和大小)重定向到循环的 stdin。

总结:

该脚本通过读取所有可用块设备的名称和大小,检查每个设备是否当前已挂载,并将未挂载设备的信息添加到一个数组中。最终,该数组将包含所有未挂载磁盘的名称和大小信息。


原文地址: https://www.cveoy.top/t/topic/oFNs 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录