Необычное поведение переменной в циклах while while

Может кто-нибудь объяснить мне, что здесь происходит?

Автор сценария:

#!/bin/sh SKIP="unity-launcher|unity-panel|unity-dash|Hud|XdndCollectionWindowImp|Desktop" WINS=() wmctrl -l | grep -Ev " (${SKIP})" | cut -d \ -f 1 | while read window; do WINS=( ${WINS[@]} $window ) echo "Found window: $window; New size: ${#WINS[@]}" done echo "Total window count: ${#WINS[@]}" echo "Window IDs:" for i in "${WINS[@]}"; do echo " $i" done 

Вывод:

 Found window: 0x0380000a; New size: 1 Found window: 0x038002ae; New size: 2 Found window: 0x03800a33; New size: 3 Found window: 0x03000001; New size: 4 Found window: 0x04c00004; New size: 5 Total window count: 0 Window IDs: 

Ожидаемое:

 Found window: 0x0380000a; New size: 1 Found window: 0x038002ae; New size: 2 Found window: 0x03800a33; New size: 3 Found window: 0x03000001; New size: 4 Found window: 0x04c00004; New size: 5 Total window count: 5 Window IDs: 0x0380000a 0x038002ae 0x03800a33 0x03000001 0x04c00004 

По сути, в конце цикла while массив WINS как-то сбрасывается, и я понятия не имею, почему. Есть ли какая-то странная фигура в bash, о которой я не знаю?

  • Перенаправление и пробелы вывода
  • Как отменить экспорт DISPLAY в Linux?
  • Как сделать функцию доступной для команды `parallel` (GNU)?
  • Сравнение и добавление файлов на основе полей
  • Сохранение отдельных выходных строк в переменных
  • переименование нескольких файлов приращения порядка
  • что используется команда «экспорт»
  • Извлеките строки с конкретными датами и выполните команду для каждого из них
  • One Solution collect form web for “Необычное поведение переменной в циклах while while”

    Трубы создают подоболочки, и эти подоболочки не могут изменять значения в вышеперечисленных процессах. Пытаться:

     while read window; do WINS=( ${WINS[@]} $window ) echo "Found window: $window; New size: ${#WINS[@]}" done < <(wmctrl -l | grep -Ev " (${SKIP})" | cut -d \ -f 1) 
    Interesting Posts

    Элементарные ОС разных обоев на каждом мониторе

    binary может запускаться только при запуске после создания символической ссылки на него

    Как правильно установить драйвер USB-дисплея для Fresco Logic FL2000DX на Ubuntu?

    Не удалось распознать старые интерфейсы после обновления материнской платы

    цвета xterm слишком яркие

    Автоматизация ввода строк в xmacro

    Как получить стабильный международный Дворжак с мертвыми ключами первого уровня в Debian?

    authorized_keys для нескольких chrooted пользователей с тем же домашним каталогом

    Если данные файла начинаются с определенной шестнадцатеричной последовательности, запустите команду strings в файле

    Сервер и клиент OpenVPN – больше не может подключиться к сети?

    Xen на openSUSE 11.4

    Как я могу настроить близость процессора к процессу в Linux?

    В чем разница между полями «errors:» «drop:» «overruns:» и «frame:» в выводах ifconfig RX?

    Перезаписать определенную строку в файле 2 с содержимым файла 1

    fedora 24 external HD больше не загружался

    Linux и Unix - лучшая ОС в мире.