Bash Shell脚本Python调用失败,出现语法错误
我目前正在准备一个shell脚本,作为其功能的一部分,它必须执行一些Python调用Bash Shell脚本Python调用失败,出现语法错误,bash,python-2.7,shell,ubuntu,virtualenv,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 文件“”,第1行 作为mp导入我的_包;打印mp.some_操作() ^ SyntaxError:无效语法 有趣的是,如果仅从bash中执行python-c…命令,
PY_OP=$(python-c'import my_package as mp;print mp.some_operation())
但是,当我在bash中调用shell脚本时,我只收到一个非常奇怪的语法错误:
$。/my_script.sh
文件“”,第1行
作为mp导入我的_包;打印mp.some_操作()
^
SyntaxError:无效语法
有趣的是,如果仅从bash中执行python-c…
命令,则不会发生此错误
作为补充信息,我可以说:
- 我正在使用一个
来包含所有virtualenv
安装的软件包pip
- 我使用的Python版本是2.7.12
- 我的操作系统是elementaryOS 0.4.1(但它完全基于Ubuntu 16.04)
任何关于我做错了什么的建议或提示都将不胜感激。根据@Cyrus在回答最初问题时给出的评论,我能够使用
cat-A{file name}.sh
命令解决问题
在文件上执行它会显示以下内容:
- 期望值:
将我的\u包作为mp导入
- 现实:
importM BM-my_packageM-BM-asM BM-mp
不幸的是,这些
M-BM-
在Atom或Sublime等普通编辑器中不可见,但在执行sh
-文件时似乎会产生影响。这也解释了错误点的奇怪位置,它指向一个空白(实际上似乎是一些特殊的、不可见的字符)。我得到了这三行:回溯(最近一次调用):
,文件“”,第1行,在
和导入错误:没有名为my_package的模块。请检查您的文件是否有特殊字符:cat-A file.sh
或cat-v file.sh
@Cyrus谢谢您的提示cat-A file.sh
已经成功了。当我运行它时,import
语句实际上看起来像这样importM BM-my_packageM-BM-asM BM-mp
。尽管这些字符在普通编辑器中是不可见的,但显然是这些字符导致了脚本失败。如果你只是简单地将评论复制到一个答案中,我很乐意接受它作为正确的解决方案。