在 shell 中将参数传递给 python 程序

在 shell 中将参数传递给 python 程序

我无法在 shell 脚本中运行 python 脚本。以下是 script.sh 文件,其中 3 个参数被传递给 python 脚本。

python main.py 1.0 0.1 10

python 程序没有读取参数。当在命令行终端中运行同一行时,它运行良好。

<<>> 我刚刚通过在硬编码中定义参数main.py并运行不带参数的命令来检查这一点。它仍然不起作用。该main.py文件还使用位于同一目录中的一些其他文件。此外,该脚本也位于同一目录中。

答案1

SyntaxError您粘贴的内容来看,听起来您正在错误的Python版本下运行脚本,特别是Python 2而不是Python 3(因为可能SyntaxError会抱怨注释,仅存在于Python 3中)。

如果您阅读实际收到的错误,您会发现这实际上与传递参数(您的问题的标题)根本没有任何关系。

正确的解决方案是不通过在脚本前面添加解释器名称来调用脚本,而是让它调用自己的解释器:

./main.py 1.0 0.1 10

代替

python main.py 1.0 0.1 10

如果写得正确的话,脚本会有一个舍邦线在开始时指定它需要在什么解释器下运行,并且将是python3或类似的东西。

通过让脚本指定它自己的解释器,调用脚本不需要知道或关心需要哪个解释器。甚至可以重写脚本以完全使用不同的语言(或者可以将其替换为根本不是脚本的编译二进制文件),并且调用者无需进行修改即可以不同的方式调用它。

相关内容