【问题标题】:How to insert a python program into a bash script?如何将 python 程序插入 bash 脚本?
【发布时间】:2014-09-13 20:06:57
【问题描述】:

我有一个小型 python 程序,它解析一个文本文件并将输出写入另一个文件。目前,我正在编写一个bash脚本来多次调用这个程序,它看起来像:

for i in $(seq 1 100); do

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

done

这很好,但我想知道是否可以在 bash 脚本文件中包含 python 程序,因此当另一个用户运行脚本时,他们不需要将 python 程序放在他们的内存中;即,是否可以将 python 程序复制并粘贴到 bash 脚本中并从脚本本身中运行它?

【问题讨论】:

  • 或者,您可以将程序echo 到脚本旁边的文件中,从那里运行它,然后rm 该文件。但真的,不要这样做。您不会对该程序进行任何语法突出显示,使其几乎无法维护。而是将其与脚本打包在一起,或者让您的 Python 脚本完全替换 bash 部分。
  • 这可能也取决于 Python 程序中的内容...
  • @tobias_k: +1 用于替换,因为 Python 也可以执行 for 循环。
  • 与您的问题没有直接关系,但被认为是一种改进,将是:for i in {1..100}; do ... - 原因:大括号扩展是 bash 内置的,不需要 subshel​​l,而 seq 不是,需要 subshel​​l 并且不是无处不在。有些人更喜欢 for (( ...; ; )) 样式循环,但你在 python 中也有这些

标签: python bash heredoc


【解决方案1】:

我想你应该可以说:

python  << END
[Python code here]
END

但我没有测试过。

【讨论】:

  • 是的,@Cyrus 似乎拥有它。
  • 我们有同样的想法来使用这里的文档。
【解决方案2】:
#!/bin/bash

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

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

输出:

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

【讨论】:

    【解决方案3】:

    对于简单的脚本,您还可以使用 -c 选项运行 python。例如

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

    我不建议写太复杂的东西,但它可以用于简单的东西。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-04-12
      • 2013-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多