编写Shell包装脚本运行Python文件时遇语法错误求助
问题解决办法
你的错误根源很明确:脚本开头的#!/usr/bin/env python3指定了用Python解释器执行这个脚本,但第二行是Shell命令,Python会把它当成代码解析,自然报语法错误。
下面给你两种可行的解决方式:
方式一:改成Shell包装脚本(适配WSL/Git Bash等类Unix终端)
把脚本的shebang替换为Shell解释器的路径,让系统用Shell来执行命令:
#!/bin/bash python3 -u index.py "$@"
保存后,确保脚本权限正确(你已经执行过chmod +x dag,这一步没问题),直接运行./dag即可。
方式二:用Python脚本实现包装(跨终端适配)
如果想保留用Python解释器执行包装脚本,就用Python的subprocess模块来调用目标文件,脚本内容改成:
#!/usr/bin/env python3 import subprocess import sys # 调用index.py并传递所有命令行参数 subprocess.run([sys.executable, '-u', 'index.py'] + sys.argv[1:])
同样赋予执行权限后,直接运行./dag或者python3 dag都可以。
额外:Windows原生终端(cmd/PowerShell)适配
如果是在Windows原生终端使用,没必要写Shell/Python包装,直接写批处理文件更简单:
新建dag.bat文件,内容如下:
@echo off python -u index.py %*
直接双击或者在终端输入dag就能运行,不需要设置执行权限。
内容的提问来源于stack exchange,提问作者Alejandro
相关产品推荐
相关产品推荐

