2016-02-04 116 views
1

我做了一个非常简单的脚本,它显示了一个gtkdialog,并让您选择运行其他两个脚本之一来设置您的停靠栏。但是,当您单击该按钮时,它不会关闭脚本。如何在它完成之后退出?脚本不会退出

这里的脚本:

#!/bin/bash 

GTKDIALOG=gtkdialog 
export MAIN_DIALOG=' 

<window title="Dock Selector" icon-name="gtk-about" resizable="true" width-request="310" height-request="310"> 

<vbox> 
<hbox space-fill="true" space-expand="true"> 
    <button>  
     <label>Deluxe (lots of eye candy, higher cpu usage)</label> 
     <action>switch-cairo && exit 1</action> 
    </button> 
</hbox> 
<hbox space-fill="true" space-expand="true"> 
    <button>  
     <label>Light (low cpu usage)</label> 
     <action>switch-ocd && exit 1</action> 
    </button> 
</hbox> 
</vbox> 
</window> 
' 

case $1 in 
-d | --dump) echo "$MAIN_DIALOG" ;; 
*) $GTKDIALOG --program=MAIN_DIALOG --center ;; 

esac 

而且这里是它的调用脚本之一:

#!/bin/sh 
killall -9 ocd-Dock 
killall -9 cairo-dock 
cairo-dock -o 
sed -i 's/cairo-dock -o/ocd-Dock/g' /usr/bin/autostart 
exit 

编辑:是啊,把&的一端固定它。干杯!

+0

也许你需要用'&'在后台运行'cairo-dock -o'。 – Barmar

+0

你确定你需要'kill -9'吗?这通常是一个非常错误的程序的标志。你通常应该首先尝试一下不那么严厉的信号,只有在那些不起作用的时候才拿出大锤子。 – tripleee

+0

@ Barmar:那是谢谢。 –

回答

0

您需要在后台启动其他脚本。你的主要脚本等待它退出,但由于某种原因它不...

可以实现这一目标(如已经在评论中提到的),通过使用“&”的命令后,像这样的

*) $GTKDIALOG --program=MAIN_DIALOG --center & ;; 
0

它看起来像GTK或开罗码头的对话框,正在控制,使用“&”在后台运行它们,并且控件应该返回到您的脚本,它应该解决您的问题。