使用windowmaker下的脚本运行图形应用程序

时间:2017-09-04 17:16:14

标签: bash

我试图在windowmaker下运行一个简单的.sh脚本,该脚本在请求用户输入后运行一组X应用程序。我的所有尝试都是徒劳的;在询问问题后终端窗口蒸发,应用程序根本无法运行。我已经尝试通过在X控制台上键入路径来运行此脚本并且它运行正常,但是当我运行该图标时它不会。

这是我的两次尝试;

echo "this or that? [a, b] "
read input
if [[ $input == "a" || $input == "A" ]]; then
/path/to/app1 "/file/to/open" &
/path/to/app2 "/file/to/open" &
/path/to/app3 "/file/to/open" &
path/to/app4 &
else
/path/to/app5 "/file/to/open" &
/path/to/app6 "/file/to/open" &
/path/to/app7 "/file/to/open" &
path/to/app8 &

fi

read -p  "this or that? [a, b] " doit 

case $doit in
     a|A)

    /path/to/app1 "/file/to/open" &
    /path/to/app2 "/file/to/open" &
    /path/to/app3 "/file/to/open" &
    path/to/app4 &
    b|B)
    /path/to/app5 "/file/to/open" &
    /path/to/app6 "/file/to/open" &
    /path/to/app7 "/file/to/open" &
    path/to/app8 &
;;
esac

在windowmaker的设置中,我创建了一个运行xterm -e" /path/to/script.sh"的图标。我不知道还能做什么。我希望有人能在这里帮助我。提前谢谢。

2 个答案:

答案 0 :(得分:0)

一些不适合评论栏的建议。

首先,捕获一些调试:

  • 在您阅读用户输入后,立即将日期和输入值回显到标准输出,例如:

read ... echo `date`" : input = $input" # or $doit

  • 修改您的图标以将stdout / stderr转储到文件,例如:

xterm -e "/path/to/script.sh >> /path/to/script.out 2>&1"

运行失败的测试后,检查/path/to/script.out是否有任何(希望是有用的)消息...

  • 如果您没有看到date/input消息,并且没有错误消息,那么xterm -e电话就会出现问题(即您甚至没有进入脚本调用)
  • 如果您看到date/input消息或与脚本相关的错误消息,那么您知道xterm -e调用成功,您可以专注于脚本的内容......

现在存在一些脚本问题:

  • 您似乎缺少app4 / app8调用的前导/,即它们应该如下所示:

/path/to/app4 & /path/to/app8 &

  • 对于case语句,每个选项测试应以双分号(;;)结尾;当您为b|B)测试完成此操作时,您将错过a|A)测试,因此请更新脚本:

a|A) ... path/to/app4 & ;;

答案 1 :(得分:0)

事实证明我实际上已经启动了应用程序,只是在每个块结束时使用等待,如下所示:

echo "this or that? [a, b] "
read input
if [[ $input == "a" || $input == "A" ]]; then
/path/to/app1 "/file/to/open" &
/path/to/app2 "/file/to/open" &
/path/to/app3 "/file/to/open" &
path/to/app4 &
wait
else
/path/to/app5 "/file/to/open" &
/path/to/app6 "/file/to/open" &
/path/to/app7 "/file/to/open" &
path/to/app8 &
wait
fi

我还有另外一个与此无关的问题,我稍后会问。