如果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,此代码也可以正常工作。
造成这种情况的原因是什么?
答案 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
使用“”包围变量的参数只是一个好习惯,“`有时与'混淆',所以我更喜欢$()。如果你内部没有可扩展的东西,就没有理由使用“”。