그래서 삭제 확인 상자에서 취소 버튼이 작동하지 않는 이유를 이해할 수 없습니다... 설명해 주실 수 있나요?
directory=$(zenity --entry \
--text "Enter a path" \
--title "Delete"\
--ok-label "Done" )
ret=$?
if ((ret==0));then
if [ -z "$directory" ];then #Check if user entered a path or not.
directory=$(pwd) #If not take the actual path.
fi
if [ -d "$directory" ];then #Check if entered path exist.
Spath=$(zenity --file-selection --filename="$directory/" --title "File Browser")
#Change the directory otherwise will not delete the wanted file.
cd $directory
fi
if (($?==0));then
#Check if the user really want to delete this file.
zenity --question --icon-name "edit-delete" --title "Confirmation" --text "Are you sure you want to delete this file?"
#Getting only the file name from the path
Sfile=$(basename "$Spath")
echo $?
clear $?
문제는 이 부분인데, 취소를 누르면 OK 버튼 경로를 따라간다는 점입니다.
if (($?==0));then
rm -f "$Sfile" #Delete the file.
elif (($?==1));then
echo $?
zenity --error --title "Info" --text "No file was deleted"
fi
fi
else
#If not existing show error message.
zenity --error --title "Error" --text "The path you entered does not exist"
fi
답변1
기억하세요. 이는 $?
반환 코드를 의미합니다.마침내명령이 실행됩니다.
$?
따라서 실행 후 인용하면 명령의 상태를 나타 Sfile=$(basename "$Spath")
냅니다 . 다음 참조는 다음 명령을 나타냅니다.$?
basename
$?
zenity
명령의 반환 코드를 테스트하려면 다음을 설정해야 합니다.ret=$?
직후zenity
(파일 시작 부분에서 수행한 것과 유사) 을 호출하고 및 $ret
not 값을 확인합니다 $?
.