0

如果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,解决方案是什么,以便此代码始终可以工作。

这是什么原因造成的?

4

1 回答 1

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

用 "" 将参数和内部变量括起来只是一个好习惯,而且 `` 有时会与 '' 混淆,所以我更喜欢 $() 。如果您内部没有任何可扩展的内容,则没有理由使用“”。

于 2013-08-19T23:59:24.007 回答