![在 shell 中将参数传递给 python 程序](https://linux22.com/image/8807/%E5%9C%A8%20shell%20%E4%B8%AD%E5%B0%86%E5%8F%82%E6%95%B0%E4%BC%A0%E9%80%92%E7%BB%99%20python%20%E7%A8%8B%E5%BA%8F.png)
我无法在 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
或类似的东西。
通过让脚本指定它自己的解释器,调用脚本不需要知道或关心需要哪个解释器。甚至可以重写脚本以完全使用不同的语言(或者可以将其替换为根本不是脚本的编译二进制文件),并且调用者无需进行修改即可以不同的方式调用它。