Python的argv和bash?

时间:2012-08-17 03:35:19

标签: python bash argv

我一直在学习并清除对蟒蛇sys.argv的一些误解。当我在bash中从命令行传递不同的字符时,我注意到:

script.py

import sys
def test(x):
    return x

print test(sys.argv)

>>>python script.py [first, second, third]

将打印:

['script.py', '[first,', 'second,', 'third]']

>>>python script.py {first, second, third}

['script.py', '{first,','second,','third}']

可是:

>>>python script.py (first,second,third)

bash: syntax error near unexpected token `('

这是python还是bash,也许两者都有?有什么理由吗?

3 个答案:

答案 0 :(得分:3)

这是bash; parens在子shell中运行命令链。

pwd ; ( cd /tmp ; pwd ) ; pwd

如果你想在论证中使用它们,你需要引用它们。

echo '(foo)'

答案 1 :(得分:2)

这是bash shell,错误消息显示:

bash: syntax error near unexpected token `('

bash将括号用于其自身目的(对命令进行分组)

尝试转义括号,如下所示:

   python script.py "(first,second,third)"

这也可能有效:

  python script.py \(first,second,third\)

答案 2 :(得分:1)

正如@Ignacio所说,尝试在bash命令行中引用每个参数。

但是,您似乎将bash视为Python方式。它们是不同的东西。

这里有一个很好的(和基本的)shell脚本编写教程:http://www.freeos.com/guides/lsst/

您只需阅读第2章即可了解问题的答案。