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
отобразит все окна, контролируемые wmctrl. Мой вывод следующий.
0x00800024 -1 DarkNetLab xfce4-panel
0x02c00006 -1 DarkNetLab Desktop
0x06806427 0 DarkNetLab [email protected]: /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" "}'
) захватывает все линии, которые 4-й элемент «Android» и печатает следующие 4 элементы производства следующие ...
Android Emulator - droid8:5554
Android Emulator - droid11:5556
Android Emulator - droid9:5558
Это все правильные окна I хотите переместиться и должны быть переданы с аргументом -r для wmctrl
Наконец, я использую | while read -r line;do wmctrl -r \"$line\" -e 1,0,0,100,100; done
, чтобы использовать каждое окно, например Android Emulator - droid8:5554
, для перемещения окна с помощью команды wmctrl.
NO WINDOWS MOVE !!
Если я изменю код на 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
, чтобы выполнить команду, которая должна быть выполнена, я получаю следующее.
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 evals и заменяют значения для переменных.
Спасибо за помощь!
Вау, вы человек. Не могу поверить, что это было так. Если вы хотите опубликовать это как ответ, я буду отмечать его как правильное. – MikeSchem