Shell-Script Python调用因语法错误而失败

时间:2017-06-04 11:15:43

标签: bash python-2.7 shell ubuntu virtualenv

我目前正在准备一个shell脚本,作为其功能的一部分,它必须执行一些Python调用。

PY_OP=$(python -c 'import my_package as mp; print mp.some_operation()')

然而,当我在bash中调用我的shell脚本时,我只收到一个非常奇怪的语法错误:

$ ./my_script.sh
File "<string>", line 1
import my_package as mp; print mp.some_operation()
      ^
SyntaxError: invalid syntax

有趣的是,如果我只是在bash中执行python -c ...命令,则不会发生此错误。

作为补充信息,我可以说以下内容:

  • 我使用virtualenv来包含所有pip已安装的软件包。
  • 我使用的Python版本是2.7.12
  • 我的操作系统是基本的OS 0.4.1(但完全基于Ubuntu 16.04)

对我所做错的任何建议或提示都将受到高度赞赏。

1 个答案:

答案 0 :(得分:0)

基于@Cyrus在回答初始问题时给出的评论,我能够使用cat -A {file-name}.sh命令解决问题。

在文件上执行它显示以下内容:

  • 期望:import my_package as mp
  • 现实:importM-BM- my_packageM-BM- asM-BM- mp

不幸的是,这些M-BM-在Atom或Sublime等普通编辑器中不可见,但在sh - 文件被执行时似乎有影响。这也解释了指向空白区域的错误点的奇怪位置(实际上它似乎是一些特殊的,不可见的字符)。