首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么wmctrl脚本不移动窗口?

为什么wmctrl脚本不移动窗口?
EN

Stack Overflow用户
提问于 2017-01-25 19:36:45
回答 1查看 676关注 0票数 2
代码语言:javascript
复制
wmctrl -l | awk '{ if ($4 == "Android") print $4" "$5" "$6" "$7" "}' | while read -r line;do wmctrl -r \"$line\" -e 1,0,0,100,100; done

好的,我知道这是有点难读,让我打破它。

代码语言:javascript
复制
wmctrl -l

将列出由wmctrl控制的所有窗口。我的输出如下。

代码语言:javascript
复制
0x00800024 -1 DarkNetLab xfce4-panel
0x02c00006 -1 DarkNetLab Desktop
0x06806427  0 DarkNetLab mac@DarkNetLab: /opt/Analysis
0x06000008  0        N/A Emulator
0x06000003  0        N/A Android Emulator - droid8:5554
0x0b800009  0        N/A Emulator
0x0b800003  0        N/A Android Emulator - droid11:5556
0x05400009  0        N/A Emulator
0x05400003  0        N/A Android Emulator - droid9:5558

然后,awk (| awk '{ if ($4 == "Android") print $4" "$5" "$6" "$7" "}')抓住了第四个元素是"Android“的所有行,并打印出接下来的4个元素,生成以下内容.

代码语言:javascript
复制
Android Emulator - droid8:5554
Android Emulator - droid11:5556
Android Emulator - droid9:5558

这些都是我想要移动的正确窗口,需要与wmctrl的-r参数一起传递。

最后,我使用| while read -r line;do wmctrl -r \"$line\" -e 1,0,0,100,100; done来使用每个窗口,比如Android Emulator - droid8:5554,用wmctrl命令移动窗口。

不许动窗户!!

如果我将代码更改为wmctrl -l | awk '{ if ($4 == "Android") print $4" "$5" "$6" "$7" "}' | while read -r line;do echo "wmctrl -r \"$line\" -e 1,0,0,100,100"; done,以回显应该执行的命令,我将得到以下信息。

代码语言:javascript
复制
wmctrl -r "Android Emulator - droid8:5554" -e 1,0,0,0,100,100
wmctrl -r "Android Emulator - droid11:5556" -e 1,0,0,0,100,100
wmctrl -r "Android Emulator - droid9:5558" -e 1,0,0,0,100,100

如果我然后复制并粘贴到终端中的任何一行,然后执行终端,正确运行它并移动窗口。所以我想知道为什么剧本不能用!

预先感谢您的帮助,我猜这是一个关于bash何时/如何使用命令和变量替代值的问题。

谢谢你的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-25 20:13:56

删除"$line“周围的转义符,即将...do wmctrl -r \"$line\"...改为...do wmctrl -r "$line"...

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41860168

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档