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"