【问题标题】:executable python file sys not accepting '(' character可执行的python文件sys不接受'('字符
【发布时间】:2017-08-17 04:52:50
【问题描述】:

我正在尝试编写一个接受命令行输入并执行一些操作的 python 文件。输入将由 a-z、[、]、( 和 ) 组成。我制作了以下程序只是为了检查我是否可以继续进行:

#!/usr/bin/env python
import sys

print str(sys.argv)

我做了chmod +x program 并尝试调用./program qwerty (abc) [hi] 并返回:

-bash: 意外标记 `(' 附近的语法错误

有没有办法改变程序,让它接受参数中的括号?

注意:我也尝试在括号前放置方括号,它返回相同的错误。

【问题讨论】:

  • () 对 shell 有特殊意义——它在子 shell 中调用封闭的命令。用双引号将您的字符串括起来以删除特殊含义 - ./program qwerty "(abc)" "[hi]"
  • 我遵循规范,无法更改上面输入的、已编辑的问题。
  • 程序运行之前在shell中失败了,所以不,你不能在程序中改变它。

标签: python bash


【解决方案1】:

在调用脚本时,脚本对 shell 语法无能为力。 shell首先解析命令行。您必须转义或引用 shell 中具有特殊含义的字符(包括大多数标点符号):

./program qwerty \(abc\) '[hi]'

【讨论】:

    猜你喜欢
    • 2019-09-18
    • 2022-07-08
    • 1970-01-01
    • 2014-06-27
    • 2012-04-17
    • 2011-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多