如何将Python程序嵌入Bash脚本?

3 投票
4 回答
2842 浏览
提问于 2025-04-18 14:20

我有一个小的Python程序,它可以读取一个文本文件,然后把结果写入另一个文件。目前,我正在写一个bash脚本来多次调用这个程序,脚本大概是这样的:

for i in $(seq 1 100); do

          python /home/Documents/myProgram.py myTextFile$i

done

这个方法运行得很好,但我想知道是否可以把Python程序放在bash脚本里,这样当其他用户运行这个脚本时,他们就不需要在自己的电脑上有这个Python程序。也就是说,能不能把Python程序直接复制粘贴到bash脚本里,然后从脚本内部运行它呢?

4 个回答

0

抱歉打扰大家,不过这里有一个可能对某些人有用的技巧,之前没有提到。

#!/bin/bash
""":" # Hide bash from python
for i in $(seq 1 100); do
  python3 $(readlink -f "$0") myTextFile$i
done
exit
"""
# Python script starts here
import sys
print('Argument List: ', str(sys.argv))

不过,我同意大家的普遍建议,直接在Python中使用循环就可以了。

1

对于简单的脚本,你也可以用 -c 这个选项来运行 Python。比如说:

python -c "x=1; print x; print 'great program eh'"

我不建议写太复杂的东西,但对于一些简单的任务,这个方法是可以用的。

5

我觉得你可以这样写:

python  << END
[Python code here]
END

不过我还没有测试过这个。

14
#!/bin/bash

python - 1 2 3 << 'EOF'
import sys

print 'Argument List:', str(sys.argv)
EOF

输出结果:

Argument List: ['-', '1', '2', '3']

撰写回答