从python行命令中转义@

从python行命令中转义@,python,zsh,Python,Zsh,我不知道这是python还是shell(linux上的zsh)的问题,我有一个类似这样的参数:“@xyz”以“@”开头 python将_script.py第一个_参数@second_参数third_参数 我试图用\或\\或使用“”转义@,但程序无法启动。如果我离开@from@second_参数,一切都会好的 在zsh中,“@”可能是一个全局字符。试着用“@”来逃避它 尝试使用echo运行参数列表,即: 回显_script.py第一个_参数@second_参数third_参数 这样,您就可以确定它

我不知道这是python还是shell(linux上的zsh)的问题,我有一个类似这样的参数:“@xyz”以“@”开头

python将_script.py第一个_参数@second_参数third_参数

我试图用\或\\或使用“”转义@,但程序无法启动。如果我离开@from@second_参数,一切都会好的

  • 在zsh中,“@”可能是一个全局字符。试着用“@”来逃避它

  • 尝试使用
    echo
    运行参数列表,即:

    回显_script.py第一个_参数@second_参数third_参数


  • 这样,您就可以确定它是按原样扩展还是按原样传递给脚本。

    在bash中工作正常。你确定这不仅仅是脚本本身的问题吗?我有zsh 4.3.10,它工作得很好。“不启动?”这意味着什么?好的,谢谢,回声测试对我也有效。我想问题是,然后我将@something传递给os.systemUse subprocess.Popen(),而不是os.system。“@”在zsh中不是全局字符
    setopt xtrace
    打开shell跟踪,查看发生了什么以及程序是否正在启动。使用printdebug语句检查Python中发生了什么,以及此时看到了什么值。我怀疑实际的设置比你所说的更复杂;例如,可能在某个地方有一个Perl垫片,而您正在用错误的引号插入参数,因此@array被丢弃在该垫片上。