Bash 脚本解析: 获取未挂载磁盘信息
该 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)
脚本解析:
-
#!/bin/bash: 指定使用 Bash 解释器执行脚本。 -
disks=(): 初始化一个名为disks的空数组,用于存储未挂载磁盘信息。 -
while IFS= read -r line; do: 开始循环读取标准输入 (stdin) 中的每一行,并将每一行赋值给变量line。 -
disk=$(echo '$line' | awk '{print $1}'): 使用awk命令提取当前行中的第一个字段,并将该字段赋值给变量disk,表示磁盘名称。 -
size=$(echo '$line' | awk '{print $2}'): 使用awk命令提取当前行中的第二个字段,并将该字段赋值给变量size,表示磁盘大小。 -
if [ -z "$(lsblk '/dev/$disk' -n -o MOUNTPOINT)" ]; then: 检查当前磁盘的挂载点是否为空。通过使用lsblk命令列出磁盘的挂载点,并检查输出是否为空来实现。如果输出为空,则表示该磁盘当前未挂载,其信息将被添加到disks数组中。 -
disks+=('$disk $size'): 将当前磁盘的信息(名称和大小)追加到disks数组中。 -
done < <(lsblk -d -o NAME,SIZE -n): 结束循环,并将lsblk命令的输出(列出所有可用块设备的名称和大小)重定向到循环的 stdin。
总结:
该脚本通过读取所有可用块设备的名称和大小,检查每个设备是否当前已挂载,并将未挂载设备的信息添加到一个数组中。最终,该数组将包含所有未挂载磁盘的名称和大小信息。
原文地址: https://www.cveoy.top/t/topic/oFNs 著作权归作者所有。请勿转载和采集!