我正在尝试使用 zenity 从 bash 脚本中的用户获取输入。(Zenity是一个bash callable gui工具包"东西"(
这是我到目前为止的尝试
#!/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
没有打印任何内容。
可能出现什么问题?
> 当运行zenity --question
时,布尔响应仅通过退出状态指示;因此没有理由收集标准输出。
The Folling Works For Me(tm(,Zenity 3.30.0:
if zenity --question --title="Ramdisk Unmount" --text="Save ramdisk contents to disk?"; then
if dir=$(zenity --file-selection --title="Ramdisk Unmount" --directory); then
echo "User requested unmount of the ramdisk at $dir" >&2
else
echo "User initially requested unmount but did not select a directory" >&2
fi
else
echo "User did not request unmount, or zenity failed" >&2
fi