Я пытаюсь использовать zenity для получения ввода от пользователя в bash-скрипте.(Zenity - это набор инструментов для вещи, называемый bash) *
Вот моя попытка на данный момент
#!/bin/bash
if [[ true ]]
then
# send a message to ask if data should be saved
# do some form of copy to save the data
zenity --question --title="Ramdisk Unmount" --timeout=0 --text="Save ramdisk contants to disk?" --ok-label="Yes" --cancel-label="No"
rvar=$?
#echo $rvar > /media/ramdisk/returnval
if [[ $rvar == 0 ]]
then
DIR=$(zenity --file-selection --title="Ramdisk Unmount" --directory)
CODE=$?
echo $CODE
echo $DIR
case $CODE in
0)
echo "dir=$DIR"
;;
1)
echo "No directory selected"
;;
-1)
echo "An error occured"
;;
esac
echo $DIR
echo $DIR > /media/ramdisk/dir
else
rm -rf /media/ramdisk/*
fi
#umount /media/ramdisk
else
false
fi
read -n1 -r -p "Press Enter to continue"
Примечание: версия zenity 3.22.0
Первые несколько строквключая первую команду zenity, кажется, работает, хотя странно, когда я пытался
rvar=`zenity --question --title="Ramdisk Unmount" --timeout=0 --text="Save ramdisk contants to disk?" --ok-label="Yes" --cancel-label="No"`
, это не работало, и
rvar=$(zenity --question --title="Ramdisk Unmount" --timeout=0 --text="Save ramdisk contants to disk?" --ok-label="Yes" --cancel-label="No")
также не работал должным образом,(В обоих случаях echo $rvar
напечатал пустую строку.) Я думаю, что это может быть связано с проблемой, с которой я сталкиваюсь в данный момент, а именно ...
В настоящий момент сценарий bash, похоже, завершается послевторая команда zenity.Путь, выбранный в диалоговом окне zenity, печатается (как я полагаю) в stdout, однако дальше ничего не происходит, скрипт просто завершается и возвращается в терминал bash.
Код echo $CODE
не печатается.
Ничего не напечатано echo $DIR
.
Что может быть не так?