如何从 bash 将文本块传递给 python

如何从 bash 将文本块传递给 python

我有一段文本,我想将其放入 bash 中,然后发送到 python,这样我就可以更多地使用它。

所以我的命令行是 cat input_file | sh bash_file.sh

我的sh文件是

#!/bin/sh
input_data=$(cat)
"$input_data" | python3 ./python_file.py

我的 python 文件是

contents = sys.stdin.read()
print(contents)

但实际上什么都没有存储到内容中。如何从 python 打印出我已添加到 shell 脚本文件中的内容?

答案1

你基本上是正确的,但你没有将内容打印$input_data到标准输入。相反,您尝试运行名为 的命令 $input_data

用于printf通过更改 shell 脚本的最后一行来打印变量的内容,如下所示:

printf "%s" "$input_data" | python3 ./python_file.py

答案2

shell 脚本的标准输入将传递到脚本中的 python 命令,类似于 python 脚本的标准输出传递到 shell 脚本的 stdout 的方式。所以,不需要使用变量,这就足够了:

#!/bin/sh
python python_file.py

你可以用你的cat file | sh script.sh或更好的来称呼它

sh script.sh < file

如果您需要更多的可读性,您可以使用cat - | python script.py, where-表示 stdin,或添加注释说明此执行等待标准输入。

相关内容