bash - Bash GUI 编程:bash 脚本中没有/不正确的 Zenity 返回值
问题描述
我正在尝试使用 zenity 在 bash 脚本中从用户那里获取输入。(Zenity 是一个 bash 可调用的 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
时,布尔响应仅通过退出状态指示;因此没有理由收集标准输出。
以下 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
推荐阅读
- sql - SQL Server:删除用户
- android - android系统有没有机会在从playstore更新应用程序时自动清除应用程序的数据包括数据库?
- c - 查找右移量以将位索引映射到位数组中的缓冲区索引
- php - Mongo $addToSet 一个数组
- python - python pandas在迭代期间更新与先前更新的行相关的列值
- animation - UIView Draw 方法在动画子层时被多次调用
- mysql - MySQL 语句中的语法错误,无用的错误消息
- javascript - 当我更改光标位置时,防止 textarea 自动滚动
- python - 迁移到 Python 3 后,关键字搜索程序不起作用 - 故障可能与 urllib 相关
- php - 如何更改 Cakephp 中的日期格式