だから、削除確認ボックスでキャンセルボタンが機能しない理由を理解できません...説明してもらえますか?
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値を確認してください$?
。