Не может получить доступ к элементам массива в zsh

Редактор считывает файл в память, затем закрывает файловую оболочку. Обычно:

open("/path/to/your/file", O_RDONLY|O_LARGEFILE|O_NOATIME) = 18
read(18, "blah blah blah"..., 4096) = 305
close(18)                           = 0

или какая-нибудь mmap или другой способ. (Не знаю, как именно он читает файлы, но дело в том, что он не держит файлы открытыми)

После этого он продолжает опрос, чтобы проверить, не изменился ли он. И снова открывается при записи.

0
22.08.2014, 14:44
1 ответ

Массив определяется в оболочке, интерпретирующей ваш скрипт, а не в терминальном окне вашего экрана.

Чтобы передать его в окно экрана zsh, попробуйте:

screen -S "MYSCREEN" -p 0 -X stuff "$(typeset -p bkgarr)"$'\r'

Обратите внимание, что он будет посылать символы новой строки как символы новой строки, а не как возврат каретки. Однако, с zsh это должно быть нормально (в командную строку будут вставлены только новые строки, а не причина принимать строку (что тоже хорошо)).

Если ваш массив содержит ^C, ", \e символы или другие специальные для терминала символы или zle или экранные вещи, то это не сработает. То же самое произойдет, если оболочка не готова к приему этого ввода.

Возможно, вам понадобится другой способ передачи информации в оболочку, запущенную внутри окна, например, через файл fifo, который проверяется как часть крюка precmd.

1
28.01.2020, 02:52

Теги

Похожие вопросы