Bash 脚本通过文件夹并使用 dd

问题描述 投票:0回答:1

嗨,我正在寻找在 bash/sh 中创建一个可以执行以下操作的脚本

进入文件夹 然后循环遍历一组 img.xz 文件,如果找到其中一个指定的文件,则使用它来通知 unxz -c (img.xzfile) | dd of=/dev/mmcblk0 bs=4096 状态=进度

该文件夹至少包含 3-5 个 img.xz

我现在拥有的

#bin/bash 
$img.xz
$img.xz2 

cd /img/ 

if ./20240317-1928-postmarketOS-edge-i3wm-0.5-microsoft-surface-rt.img.xz -->$img.xz
then unxz -c $img.xz | dd of=/dev/mmcblk0 bs=4096 status=progress

else 
./20240317-1346-postmarketOS-edge-mate-7-microsoft-surface-rt.img.xz --> $img.xz2
then unxz -c $img.xz2 | dd of=/dev/mmcblk0 bs=4096 status=progress

我不知道这是否有效 提出这样的问题,可以工作,甚至列出文件夹中的所有图像,并通过选择选项 1-5 要求女巫使用,将其放入变量中,并在 unxz -c (变量)| 中使用该变量。 dd of=/dev/mmcblk0 bs=4096 status=将镜像构建到设备中的 emmc 模块的进度

此脚本将从 USB 启动的实时 Linux 映像运行,图像位于 /img/ 文件夹中

linux bash sh dd
1个回答
0
投票

您可以通过迭代文件夹中的

.img.xz
文件并向用户提供选项来选择要使用的图像来实现您的要求。这是一个执行此操作的脚本:

#!/bin/bash

# Change directory to the folder containing the .img.xz files
cd /img/ || exit

# Array to store available image files
img_files=()

# Find .img.xz files in the current directory
while IFS=  read -r -d $'\0'; do
    img_files+=("$REPLY")
done < <(find . -maxdepth 1 -type f -name "*.img.xz" -print0)

# Check if any image files were found
if [ ${#img_files[@]} -eq 0 ]; then
    echo "No .img.xz files found in the /img/ folder."
    exit 1
fi

echo "Available image files:"
for ((i=0; i<${#img_files[@]}; i++)); do
    echo "$(($i+1)). ${img_files[$i]}"
done

# Prompt user to select an image file
read -rp "Enter the number corresponding to the image file you want to use: " selection

# Validate user input
if ! [[ "$selection" =~ ^[1-9]+$ ]] || ((selection < 1)) || ((selection > ${#img_files[@]})); then
    echo "Invalid selection. Please enter a number between 1 and ${#img_files[@]}."
    exit 1
fi

# Get the selected image file
selected_img="${img_files[$((selection - 1))]}"

# Extract and write the image to the /dev/mmcblk0 device
unxz -c "$selected_img" | dd of=/dev/mmcblk0 bs=4096 status=progress

echo "Image flashing complete."

这个脚本:

  • 将目录更改为
    /img/
    文件夹。
  • 在当前目录中搜索
    .img.xz
    文件。
  • 显示可用图像文件的编号列表。
  • 提示用户输入相应的编号来选择图像文件。
  • 验证用户输入以确保其是有效的选择。
  • 使用
    /dev/mmcblk0
    unxz
    将选定的图像文件提取并写入到
    dd
    设备。
  • 图像闪烁完成后打印一条消息。

确保以适当的权限运行此脚本,并在写入

/dev/mmcblk0
设备时务必小心,因为它可能会覆盖数据。

© www.soinside.com 2019 - 2024. All rights reserved.