BASH dd problem

1

Eu estou tentando aprender bash e agora estou tentando fazer um script para gravar isos. Eu fiz o número "4" para ter certeza que as variáveis estavam certas.

a mensagem que recebo quando concluo meu programa e executo dd, ou seja, 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

O script contém:

#!/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

espero que você possa ajudar, obrigado antecipadamente

    
por Andreas Andreasson 07.03.2016 / 06:14

1 resposta

1

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

Isso tentaria substituir o shell atual pelo comando "..." (ou seja, a string inteira é o nome do comando). Este comando não existe, e é por isso que você obtém a mensagem de erro Nenhum arquivo ou diretório .

Eu não entendo muito bem por que você gostaria de usar exec aqui, especialmente porque você tem mais comandos para executar depois ( exec nunca retorna).

Em vez disso, basta chamar sudo como normal:

sudo dd if="$iso" of="/dev/$device" bs="$speed"
    
por 06.10.2017 / 00:43