我们在 shell 中使用 <<< 来执行 Python 代码是什么意思



我想写一个Shell脚本,运行保存在变量$code中的Python代码。

所以我用这个命令保存脚本在变量$code中:

$ export CODE='print("Hello world")'

解决问题我在一个名为run的文件中编写了以下脚本:

#!/bin/bash
echo "$CODE" > main.py
python3 main.py

要运行shell脚本,我使用:

./run

和它的工作但是我发现了另一个我不明白的答案:

python3 <<< $CODE

那么我们用<<<是什么意思呢?

在很多shell中,<<<表示这里字符串,是将标准输入传递给命令的一种方式。<<<用于字符串,例如

$ python3 <<< 'print("hi there")'
hi there

将右边的单词传递给左边命令的标准输入。

<<表示here文档,例如

command <<MultiLineDoc 
Standard Input
That
Streches many
Lines and preserves 
indentation and 
linebreaks
which is useful for passing many arguments to a command, 
e.g. passing text to a program and preserving its indentation.
The beginning and ending _MultiLineDoc_ delimiter can be named any way wanted, 
it can be considered the name of the document. 
Important is that it repeats identically at 
both beginning and end and nowhere else in the 
document, everything between that delimiter is passed.
MultiLineDoc

<用于传递文件的内容,例如command < filename.txt

至于你的例子<<<:你可以用|做同样的事情,但只有当你所有的变量都在你传递的东西中定义时才行。如果您确实在环境中定义了其他变量,并且希望交叉引用这些变量,则可以像示例中那样使用here-string,这样可以在传递的内容中引用其他变量。

请参阅:https://en.wikipedia.org/wiki/Here_document

https://linuxhint.com/bash-heredoc-tutorial/

在Bash中,zsh(和其他一些shell)<<<here字符串操作符。您发布的代码大致相当于

echo "$PYCODE" | python3

相关内容

  • 没有找到相关文章

最新更新