![如何从 bash 将文本块传递给 python](https://linux22.com/image/183988/%E5%A6%82%E4%BD%95%E4%BB%8E%20bash%20%E5%B0%86%E6%96%87%E6%9C%AC%E5%9D%97%E4%BC%A0%E9%80%92%E7%BB%99%20python.png)
我有一段文本,我想将其放入 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,或添加注释说明此执行等待标准输入。