2017-09-04 68 views
2

我试图获得一个简单的.sh脚本,在请求用户输入后运行一组X应用程序的windowmaker下运行。我所有的尝试都是徒劳的;终端窗口在提问后蒸发,应用程序根本无法运行。我试图通过在X控制台上键入它的路径来运行这个脚本,并且它完美地工作,但是当我运行该图标时它不会。在windowmaker下使用脚本运行图形应用程序

这些是我的2次尝试;

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” 的图标。我不知道还有什么要做。我希望有人能帮助我。提前致谢。

+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语句,每个选项的测试应该w末用双分号(;;);你这样做了b|B)测试时,你错过了它的a|A)测试,所以更新像这样的脚本:

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

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 

我有一个问题那是无关的这一点,我要问一下。

相关问题