xdotool代码仅在程序被“killall”命令终止时才起作用

时间:2013-08-18 22:09:27

标签: bash shell terminal expect xdotool

如果leafpad打开..我通过终端

关闭它
killall leafpad

那么这个xdotool代码就可以正常工作了 它打开一个文件,等待2秒,搜索标题,然后激活它并移动它。

leafpad '/media/1/AAA'
sleep 2
a=`xdotool search --name "AAA"`
xdotool windowactivate --sync $a
xdotool windowmove --sync $a 377 153

但是让我们在没有'killall leafpad'命令的情况下手动关闭leafpad。

现在让我们重新运行这个脚本。

不,这次它不起作用。

解决方案是什么,以便即使没有通过killall命令关闭leafpad,此代码也可以正常工作。

造成这种情况的原因是什么?

1 个答案:

答案 0 :(得分:1)

我无法重现您的情况,但似乎存在不同的问题。

leafpad '/media/1/AAA'

这将运行leafpad,然后等待直到它关闭。你必须用&结束这一行。继续前进:

leafpad '/media/1/AAA' &

另外,我会以这种方式重构您的代码:

leafpad '/media/1/AAA' &
sleep 2
a=$(xdotool search --name 'AAA')
xdotool windowactivate --sync "$a"
xdotool windowmove --sync "$a" 377 153

使用“”包围变量的参数只是一个好习惯,“`有时与'混淆',所以我更喜欢$()。如果你内部没有可扩展的东西,就没有理由使用“”。