怎样通过命令行参数把含有回车符"\n"的字符串传给python程序

怎样通过命令行参数把含有回车符"\n"的字符串传给python程序

这两天在学python
发现有个比较奇怪的问题
我从命令行参数中传进去的回车符”\n”跟程序里本身的字符串中含的”\n”表现不一样
比如简单程序t.py
#!/usr/bin/python

import sys

str='a\nb\nc'
print str
str1=sys.argv[1]
print str1
print sys.argv[1]

# ./t.py “a\nb\nc”执行的时候
系统输出:

    a
    b
    c
    a\nb\nc
    a\nb\nc


不知道为什么
难道是shell的问题?
哈哈,没有仔细看入门教程吧
我的确没有看过这里的入门教程
那到底这是怎么回事儿呢
[root@mail ~]# A="a
> b
> c
> "
[root@mail ~]# python ttt.py $A
a
b
c
a
a
[root@mail ~]# python ttt.py "a
> b
> c
> "
a
b
c
a
b
c

a
b
c
程序中的\是可以转换了。而传入的参数中的\是不转义的。如果你使用repr()看一下它们的内部表示就知道了:

对于传入的"a\nb\n"在python运行时其实是"a\\nb\\n",与内部的"a\nb\n"是不同的。
python 的教程总得看看吧,花两个小时应该就把教程给看完了,
python 简明教程不错


QUOTE:
原帖由 limodou 于 2007-3-23 17:13 发表
程序中的\是可以转换了。而传入的参数中的\是不转义的。如果你使用repr()看一下它们的内部表示就知道了:

对于传入的"a\nb\n"在python运行时其实是"a\\nb\\n",与内部的"a\nb\n"是不同的。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
非常感谢
这个弄明白了
但是问题还是没有解决呀
比如我有个a.sh
内容是

#!/usr/bin/bash

a="a\nb"
python ttt.py $a


我需要这样用
这里的$a该怎样定义呢?
a="a\rb"
?
还是
a="a
b"
?
谢谢