Linux 为什么此wmctrl脚本不移动窗口

Linux 为什么此wmctrl脚本不移动窗口,linux,bash,shell,awk,command,Linux,Bash,Shell,Awk,Command,好吧,我知道这有点难读,让我把它打断 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 将列出由wmctrl控制的所有窗口。我的输出如下 wmctrl -l Android Emulator - droid8:5554 Android Emulator - droid11:

好吧,我知道这有点难读,让我把它打断

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
将列出由wmctrl控制的所有窗口。我的输出如下

wmctrl -l
Android Emulator - droid8:5554
Android Emulator - droid11:5556
Android Emulator - droid9:5558
然后awk(
|awk'{if($4==“Android”)print$4”“$5”“$6”“$7”“}
)获取第四个元素为“Android”的所有行,并打印接下来的4个元素,生成以下内容

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
这些都是我想要移动的正确窗口,需要通过wmctrl的-r参数传入

最后我在读取-r行时使用了
;执行wmctrl-r\“$line\”-e 1,0,0100;完成
使用Android Emulator-droid8:5554等每个窗口使用wmctrl命令移动窗口

没有窗户移动

如果我将代码更改为
wmctrl-l | awk'{If($4==“Android”)在读取-r行时打印$4“$5“$6“$7”);执行回显“wmctrl-r\”$line\“-e 1,0,0100”;完成
为了回显应该执行的命令,我得到以下命令

wmctrl -l
Android Emulator - droid8:5554
Android Emulator - droid11:5556
Android Emulator - droid9:5558
如果我将任何一行复制粘贴到终端并执行,终端将正确运行并移动窗口。。所以我想知道为什么脚本不起作用

提前感谢您的帮助,我想这是bash何时/如何执行命令并用值替换变量的问题


谢谢你的帮助

移除“$line”周围的转义符,即将“$line”更改为“
”…执行wmctrl-r\“$line\”…
仅执行“
”…执行wmctrl-r“$line”…

哇,你就是那个人。真不敢相信这是真的,哈哈。如果你想把这个作为一个答案,我会把它标记为正确的。