Bash GUI 编程:bash 脚本中没有/不正确的 Zenity 返回值



我正在尝试使用 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

相关内容

  • 没有找到相关文章

最新更新