【发布时间】:2014-03-25 08:42:50
【问题描述】:
我有一个包含 python 代码的 bash 脚本 f。该 python 代码从标准输入中读取。我希望能够按如下方式调用我的 bash 脚本:
f input.txt > output.txt
在上面的示例中,python 代码将从 input.txt 读取并写入 output.txt。
我不知道该怎么做。我知道如果我只想写入一个文件,那么我的 bash 脚本应该是这样的
#!/bin/bash
python << EOPYTHON > output.txt
#python code goes here
EOPYTHON
我尝试将上面代码中的第二行更改为以下内容,但没有运气
python << EOPYTHON $*
我不知道该怎么做。有什么建议吗?
编辑 我将举一个更具体的例子。考虑以下 bash 脚本,f
#!/bin/bash
python << EOPYTHON
import sys
import fileinput
for i in fileinput.input():
sys.stdout.write(i + '\n')
EOPYTHON
我想使用以下命令运行我的代码
f input.txt > output.txt
如何更改我的 bash 脚本,使其使用“input.txt”作为输入流?
【问题讨论】:
-
f < input.txt > output.txt有什么问题? -
"我有一个包含 python 代码的 bash 脚本 f。" 为什么?如果您坚持每个源文件使用一种语言,您可能会发现代码更易于维护。
-
所以我将问题解释为您想知道将 python 输出直接重定向到脚本中的何处(即脚本被称为将 stoudt 重定向到 output.txt)。我的回答应该可以解决这个问题,但仍然有点好奇为什么不能只将 python 打印到标准输出并让 bash 处理来自脚本外部的重定向?
-
@Johnsyweb 你从来没有为用另一种语言编写的脚本制作过包装器?
-
@BroSlow:当然有,但是包装器可以调用外部文件而不是包含它。这种关注点分离提高了可测试性和可维护性。