如何从 python EOF 定义 bash 变量

How to define a bash variable from python EOF

我是 bash 的新手,无法在标题中解释我的问题,我进行了大量谷歌搜索,我想这就是我想出的标题

我希望能够使用 python EOF 并在 EOF 中定义一个 bash 变量(如果可能)并在之后调用它。

test.txt:

everything - literally the string everything

我正在打开这个文件并获取内容 test.sh:

#!/bin/bash
CMD=$(cat <<EOF

with open('text.txt', 'r') as f:
    for line in f.readlines():
          pass

print(f"WOW text has {line}")

EOF
)

python3 -c "$CMD"

输出:

WOW text has everything

我希望能够通过在我的 CMD 中定义它来共享一个变量(我知道它叫什么)并在完成后在 bash 中回显它;

#!/bin/bash
CMD=$(cat <<EOF

with open('text.txt', 'r') as f:
    for line in f.readlines():
          pass

print(f"WOW text has {line}")
$var = line - somehow define a bash variable in python EOF
EOF
)

python3 -c "$CMD"
echo $var - output this 

那么新的输出(我想要的)是:

WOW text has everything
everything

I want to be able to share a variable by defining it in my CMD

那是不可能的。

I want to

编写一个 Bash 内置函数或路径 Bash 并进行修改,创建一个共享内存区域并引入一个新的特殊变量,该变量使用该共享内存区域来存储和获取变量的值.

使用 python 中的共享内存区域来存储变量的值。

您还可以更进一步,直接引入一个 Bash 可加载模块,该模块具有与 Python 的接口,通过本地套接字或类似方式进行通信,类似于 vim Python图书馆。


您可以:

  • 输出值并使用 命令替换 捕获 python 进程的输出并将该输出分配给变量。

    var=$(python -c 'print(line)')
    echo "$var"
    
  • 将值存储到文件中,然后在 Bash 中读取该文件的内容。或类似。

    python -c 'open("/tmp/temporaryfile.txt").write(line)'
    var=$(cat /tmp/temporaryfile.txt)
    echo "$var"
    

您可能想研究“进程”——它们是什么,它们共享什么和不共享什么,以及进程之间的通信方法是什么。