BASH dd 문제

BASH dd 문제

저는 bash를 배우고 있으며 이제 iso를 굽는 스크립트를 작성하고 싶습니다. 변수가 올바른지 확인하기 위해 숫자 "4" 명령을 수행했습니다.

프로그램을 완료하고 dd를 실행하면 받는 메시지입니다.command nr 5

./burn2.sh: line 39: /home/anon/dotsh/sudo dd if=/home/anon/Downloads/OS/Windows/Win10homepro/Win10.iso of=/dev/sdb1 bs=1M: No such file or directory

스크립트에는 다음이 포함됩니다.

#!/bin/bash
#set -vx
speed=512K
iso_file="iso.txt"
dev_file="dev.txt"
speed_file="speed.txt"
while true
    do
    clear
    echo "============================="
    echo "    Burning menu using dd    "
    echo "============================="
    echo "Enter 1 for full path to iso."
    echo "Enter 2 for media"
    echo "Enter 3 to set bs speed 512K default"
    echo "Enter 4 to save to files"
    echo "Enter 5 to execute dd command"
    echo "Enter q to exit q:"
    echo -e "\n"
    echo -e "Enter your choice \c"
    read -r choice
    case "$choice" in
        q) exit ;;
        1) echo -e "Enter path to iso \c"
           read -r iso ;;
        2) echo -e "Enter device"
           read -r device ;;
        3) echo -e "Enter bs speed \c"
           read -r speed ;;
        4) echo "$iso" > $iso_file
            echo "$device" > $dev_file
            echo "$speed" > $speed_file ;;
        5) echo -e "Going to format $device, are you sure (y/N?) \c"
            read -r $ans
        if [[ "$ans" != "y" && "$ans" != "Y" ]]; then
            echo "Clearing screen"
            sleep 2
            clear
            exec "sudo dd if=$iso of=/dev/$device bs=$speed"
            echo "Burning done!"
            sleep 3
            exit
        fi
    esac
done

답변1

exec "sudo dd if=$iso of=/dev/$device bs=$speed"

이는 현재 쉘을 "..."라는 명령으로 바꾸려고 시도합니다(즉, 전체 문자열은이름명령). 명령이 존재하지 않으므로 다음을 얻습니다.해당 파일이나 디렉터리가 없습니다.에러 메시지.

exec특히 그 이후에 실행할 추가 명령이 있기 때문에( exec결코 반환되지 않음) 여기에서 사용 하려는 이유를 잘 모르겠습니다 .

대신 sudo평소처럼 호출하세요.

sudo dd if="$iso" of="/dev/$device" bs="$speed"

관련 정보