[[ $run_backup ]]
не является булевой проверкой;он терпит неудачу, только если его аргумент является пустой строкой (которая не является ни 0, ни 1).
Так как zenity
возвращает 0, если вы нажмете OK, вы хотите что-то вроде
[[ $run_backup -eq 0 ]] && echo "The user wants to run the backup"
или
(( run_backup == 0 )) && echo "The user wants to run the backup"
или
# You need to negate the value because success(0)/failure(!=0) use
# the opposite convention of true(1)/false(0)
(( ! run_backup )) && echo "The user wants to run the backup"
Исходя из того факта, что run_backup
был исходным статусом команды zenity
в исходном вопросе, самой простой вещью было быпросто использовать &&
для объединения zenity
и вашей функции в одну команду.
zenity --question --width=300 --text "..." && echo "The user wants to run the backup"