Вообще говоря, ничто из вашей оболочки не подвергается воздействию процессов, выполняющихся в ней, если не указано специально, например, через переменную среды. Итак, все, что вам нужно сделать, это найти способ предоставить эту таблицу Python.
. Вы можете сделать это, прочитав данные в Python как скрипт и запустив Python с -i
чтобы сделать его впоследствии интерактивным.
Чтобы передать ввод в сценарий, в то же время позволяя Python стать интерактивным, ввод не может быть задан как стандартный ввод. Но, к счастью, zsh (и bash) имеют способ перенаправить вывод команды, как если бы это был файл, а Python имеет простой способ читать ввод из файлов.
Вот сценарий: он считывает пары ключ / значение, разделенные равенством , из файлов и / или стандартный ввод в словарь с именем eqdict
.
"""eqdict.py
Translate equals-separated key/value lines into a Python dict.
"""
try:
import fileinput
eqdict = {}
for line in fileinput.input():
key, val = line.rstrip().split('=', 1)
eqdict[key] = val
finally:
# Don't pollute the global namespace
del fileinput, line, key, val
И вот как вы можете его использовать:
zsh% hash -d some_name=./some_dir/
zsh% python3 -i eqdict.py <(hash -d)
>>> eqdict['some_name']
'./some_dir/'