작동하지 않는 모든 창을 최대화하는 Bash 스크립트

작동하지 않는 모든 창을 최대화하는 Bash 스크립트

이 스크립트를 사용하여 모든 창을 최대화하려고 하는데 작동하지 않는 것 같습니다. 어떤 도움이라도 좋을 것입니다.

#!/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

window_idsmapfile/readarray 는 각 행이 자체 요소가 되는 배열을 만듭니다.


아니면 읽기 루프일 수도 있습니다.

wmctrl -l | while IFS=' ' read -r window_id _; do

wmctrl -l이 경우 공백을 구분 기호로 사용하여 출력을 읽습니다. 각 행의 첫 번째 필드는 에 할당되고 $window_id다른 모든 필드는 에 할당됩니다 $_.

관련 정보