Вы можете передать массив в Python, добавив его в качестве аргументов, и использовать sys.argv[1:]
внутри python для его чтения.
Возвращаться к bash
немного сложно, когда ваши значения могут содержать пробелы или новые строки, но вы можете использовать вывод python, разделенный новой строкой -, вместе с readline
.
arr=(0)
readarray -t arr < <(python -c '
import sys
arr=sys.argv[1:]
arr.append(1)
arr.append("a b")
for a in arr:
print(a)
' "${arr[@]}")
printf '%s\n' "${arr[@]}"
Выход:
0
1
a b
Как заметил @Vilinkameni, производительность операций ввода-вывода может различаться в GNU/Linux, если файлы, к которым осуществляется доступ, находятся на другом физическом устройстве или другом типе файловой системы.
В моем случае WSL2 использует виртуальный жесткий диск, но мой рабочий каталог (, который WSL был cd
преобразован в ), фактически находился на моем C:/
диске. Таким образом, при доступе к файлу /usr/share/dict/words
я остаюсь на виртуальном жестком диске WSL2, но если я скопирую файл на свой диск C:/
, производительность резко понизится, потому что он должен прочитать файл в другой "файловой системе". ".
Я проверил это, переместив свою программу в /usr/share/dict/
, создав там копию файла words
, и теперь производительность идентична.