为什么`\ n`不能在Python中工作

时间:2014-01-03 11:39:39

标签: bash shell cmd

我正在尝试以下示例:

python -c "import sys; print sys.argv[1]" "test\ntest"

输出:

test\ntest

但我想要关注

test 
test

更新1# 正如@devnull建议的那样,如果用户自己通过了$,那么可以解决问题,但是python应该如何解决这个问题?

我试过了:

python -c "import sys; print '$' + sys.argv[1]" 'test\ntest'

但输出:

$test\ntest

3 个答案:

答案 0 :(得分:4)

告诉shell传递你想看的内容:

python -c "import sys; print sys.argv[1]" $'test\ntest'

这会产生:

test
test

$'string'语法称为ANSI-C Quoting


另一种方法是告诉shell解释你的原始输出:

python -c "import sys; print sys.argv[1]" 'test\ntest' | xargs -0 echo -en

这也会产生:

test
test

答案 1 :(得分:4)

正如deed02392所提到的,shell从字面上发送字符,因此python在内部“转义”反斜杠。要了解我的意思,请尝试

python -c "import sys; print repr(sys.argv[1])" "test\ntest"
'test\\ntest'

要解决此问题,请执行以下操作:

python -c "import sys; print sys.argv[1].decode('string_escape')" "test\ntest"
test
test

答案 2 :(得分:0)

你的shell正在向python脚本发送两个文字字符\n

由于您正在使用bash,我相信如果您只是在"test之后按实际返回键,它会检测到您仍在输入参数并让您继续使用另一个test"然后通过这到python。