Python脚本将传递给它的每个命令行参数都视为字符串。理想情况下,我们应该使用一些标准的解析器来解析命令行参数,但是我正在尝试sys.argv
如果我们使用/usr/local/bin/somemodule 1.2.3.4 11.22.33.44 111.222.333.444 1.2.3.4 [1.2.3.4,1.2.3.4] [sub.domain.com,sub2.domain.com,sub3.domain.com] somestring
来解析以下参数:
sys.argv[1:]
当我打印['1.2.3.4', '11.22.33.44', '111.222.333.444', '1.2.3.4', '1', '1', '2', 'somestring'
时,我得到一个带有另外一个参数的列表
'1'
此行为不一致。知道为什么列表会转换为{{1}}吗?
答案 0 :(得分:2)
[string]
是不带引号的Shell通配符,它匹配名称为s
或t
或r
或i
或n
的文件或g
。
显然,当前目录中有一个名为1
的文件,并且您尝试使用的真实通配符与之匹配。
这可能很难诊断或重现,因为如果没有匹配的文件,外壳程序(在大多数平台上为默认配置)将逐字通过通配符。
课程基本上是always quote shell expressions which contain nontrivial strings.