![最大化所有窗口的 Bash 脚本不起作用](https://linux22.com/image/206940/%E6%9C%80%E5%A4%A7%E5%8C%96%E6%89%80%E6%9C%89%E7%AA%97%E5%8F%A3%E7%9A%84%20Bash%20%E8%84%9A%E6%9C%AC%E4%B8%8D%E8%B5%B7%E4%BD%9C%E7%94%A8.png)
我试图使用这个脚本来最大化我的所有窗口,但它似乎不起作用。任何帮助都会很棒。
#!/bin/bash
window_ids=$(wmctrl -l | cut -f1 -d " ")
for window_id in $window_ids
do
wmctrl -i -r "$window_ids" -b add,maximized_vert,maximized_horz
done
答案1
您正在window_ids
循环内调用,但您似乎想要window_id
我不太熟悉 wmctrl 命令,但您通常也应该避免使用分词来创建这样的循环。
您可以使用数组:
mapfile -t window_ids < <(wmctrl -l | cut -f1 -d " ")
for window_id in "${window_ids[@]}"; do
mapfile/readarray 将创建一个数组window_ids
,每一行都成为它自己的元素
或者也许是一段读取循环:
wmctrl -l | while IFS=' ' read -r window_id _; do
wmctrl -l
在这种情况下,将使用空格作为分隔符来读取输出。每行的第一个字段将分配给$window_id
,其他所有字段都将分配给$_
。