sh 1语法错误(尝试运行外部python脚本时意外

sh 1语法错误(尝试运行外部python脚本时意外,python,shell,Python,Shell,因此,当试图运行代码的程序尝试运行python脚本时,它是在shell中运行的。我确保它有一个shebang,因此它使用适当的解释器运行,但它一直在使用 sh: 1: Syntax error: "(" unexpected 尽管它显然被设置为 #!/usr/bin/env python3 下面是有问题的代码 !/usr/bin/env python3 #四个参数,密码主机通道和消息。 #例如:“ircbot_message.py hunter2 example.com#adminchann

因此,当试图运行代码的程序尝试运行python脚本时,它是在shell中运行的。我确保它有一个shebang,因此它使用适当的解释器运行,但它一直在使用

sh: 1: Syntax error: "(" unexpected
尽管它显然被设置为

#!/usr/bin/env python3
下面是有问题的代码

!/usr/bin/env python3
#四个参数,密码主机通道和消息。
#例如:“ircbot_message.py hunter2 example.com#adminchannel ADMINHELP”
导入系统
导入套接字
def包():
尝试:
data=sys.argv[4:]
打印(数据)
除:
data=“未指定任何数据”
数据=str(数据)
数据=字节(数据,“ascii”)
微移(数据)
def微移(数据):
主机=sys.argv[2]
端口=45678
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s、 连接((主机、端口))
s、 发送(数据)
s、 关闭()
如果_name _==“_main”和len(sys.argv)>1:#如果未导入且有多个参数
包()
我在一台云服务器上运行Ubuntu18.04服务器版,位于加拿大的一个专用盒子上。 哦,这是python 3.6.8

添加更多信息。将命令发送到py脚本的代码段

/proc/ext_python(var/script, var/args, var/scriptsprefix = 1)
    if(scriptsprefix) script = "scripts/" + script

    if(world.system_type == MS_WINDOWS)
        script = replacetext(script, "/", "\\")

    var/command = config.python_path + " " + script + " " + args
    shell("[command]")
    return
那就叫它

usr/bin/python3 ircbot_message.py commskey "iphere" null "ADMIN - HELP ME IM DYING INSIDE"
在DM中

/proc/send2irc(var/msg, var/admin = 0)
    if(config.use_irc_bot)
        paranoid_sanitize(msg)
        if(admin)
            msg = "ADMIN - [msg]"
        // 3rd param is unused in the bot, would spend time to fix this but I'm lazy. - Jon
        ext_python("ircbot_message.py", "[config.comms_password] [config.irc_bot_host] null [msg]")
    return

当您调用脚本时,您的参数是什么?代码是dm格式的,因此它会这样调用
/proc/ext\python(var/script,var/args,var/scriptsprefix=1)if(scriptsprefix)script=“scripts/”+script if(world.system\u type==MS\u WINDOWS)script=replacetext(script,“/”,“\\”)var/command=config.python\u path+“+script+”+args shell(“[command]”)返回
where
shell(“[command]”)
将把它发送到shell…以这个名字,你能告诉我们你如何调用这个脚本吗?我指的是实际的shell脚本。编辑:请把上面的代码片段放在你的问题中,使它更具可读性。
shell()
,就像所有其他
系统()
等同物,通常是一个坏主意,不应该使用。但是,除此之外——文件的权限上是否设置了执行位?(如果没有设置,则无法通过
execve()
syscall执行,因此内核不尊重shebang,您依赖调用进程来做正确的事情——这通常不会).BTW,这是什么“DM”?Python专业知识只有在Python解释器实际启动时才有用,这里没有;如果DM是应该调用该解释器的编程语言,那么您有问题(并且应该询问)DM,而不是Python;了解它的人可能会给您指出一个操作系统接口,该接口允许您在运行外部进程时提供显式的argv而不是shell命令行