Python 从shell脚本执行.py脚本,为什么$1是神奇的解决方案?
我有一个python脚本,我一直在尝试在cygwin shell脚本中自动执行。.py脚本包含一个接受某些参数的函数,但这些参数是在.py脚本中定义的 在谷歌搜索了几个小时并在阳光下尝试了一切之后,这就是最终的效果:Python 从shell脚本执行.py脚本,为什么$1是神奇的解决方案?,python,shell,cygwin,Python,Shell,Cygwin,我有一个python脚本,我一直在尝试在cygwin shell脚本中自动执行。.py脚本包含一个接受某些参数的函数,但这些参数是在.py脚本中定义的 在谷歌搜索了几个小时并在阳光下尝试了一切之后,这就是最终的效果: python email_script.py $1 如果我使用下面的代码,即使使用完整的文件路径和.py脚本中的shebang: python email_script.py 我会得到这个错误 [Errno 22] Invalid argument.exe: can't ope
python email_script.py $1
如果我使用下面的代码,即使使用完整的文件路径和.py脚本中的shebang:
python email_script.py
我会得到这个错误
[Errno 22] Invalid argument.exe: can't open file 'email_script.py
为什么$1起作用?不确定,但可能是文件中的行尾问题。我猜该行以DOS lineendings结尾,cygwin bash将回车符视为文件名的一部分,因此“email_script.py”被视为email_script.py\r。在第二个版本中,回车符“属于”“到
$1
。我建议尝试使用Unix LineEnds保存脚本。以'email\u script.py
结尾的错误mesage(注意缺少第二个引号)可能暗示在.py之后有一个换行符,bash认为该字符是文件名的一部分。Lars写的。如果您使用的是Cygwin,请确保使用仅以UNIX行结尾保存的文件编辑器。如果您确实想查看,还可以轻松地将文件转储到十六进制编辑器中,自己查看。