Linux下通过Bash从.img镜像文件提取fdisk指定值至变量
Bash脚本提取SD卡镜像的扇区大小与分区End值
直接将以下代码片段集成到你的Shell脚本中,即可提取目标值并保存为变量:
# 定义镜像文件路径 IMG_PATH="/home/documents/image-of-sd-card.img" # 提取扇区大小(Sector size行的最后数值) sector_size=$(fdisk -l "$IMG_PATH" | grep "Sector size" | awk '{print $NF}') # 提取第二个分区的End字段数值 end_sector=$(fdisk -l "$IMG_PATH" | awk '/^\/dev/ {if (++count == 2) print $3}') # 可选:打印变量验证结果 echo "扇区大小: $sector_size" echo "第二个分区End值: $end_sector"
代码说明
fdisk -l "$IMG_PATH":列出镜像文件的分区表完整信息- 提取扇区大小:用
grep定位到包含"Sector size"的行,再通过awk的$NF获取该行最后一个字段(即扇区大小数值) - 提取第二个分区End值:用
awk匹配以/dev开头的分区行,通过计数器count定位到第二行分区数据,打印第3个字段(对应End列)
注意事项
- 确保你拥有镜像文件的读取权限,若权限不足需在
fdisk前添加sudo - 若
fdisk输出的分区列顺序有差异,可先手动执行fdisk -l "$IMG_PATH"查看输出,调整awk中的字段序号(比如把$3改成对应End列的序号)
内容的提问来源于stack exchange,提问作者TimZed
相关产品推荐
相关产品推荐

