저는 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"