将bash中的多个参数传递给python
我有一个简短的内联python脚本,我从一个bash脚本调用,我想让它处理一个多字变量(来自$*
)。 我预计这只是工作:
#!/bin/bash
arg="A B C"
python -c "print '"$arg"'"
但它不:
File "<string>", line 1
print 'A
^
SyntaxError: EOL while scanning string literal
为什么?
我想解释为什么你的代码不起作用。
你想要做的是:
arg="A B C"
python -c "print '""$arg""'"
输出:
A B C
你的代码的问题在于python -c "print '"$arg"'"
被shell解析为python -c "print '"ABC"'"
。 看到这个:
arg="A B C"
python -c "print '"A B C"'"
#__________________^^^^^____
输出:
File "<string>", line 1
print 'A
SyntaxError: EOL while scanning string literal
在这里你会得到一个语法错误,因为空格阻止了连接,所以下面的B
和C"'"
被解释为两个不同的字符串,它们不是作为python解释器的命令传递的字符串的一部分(它只接受-c
后面的字符串作为命令)。
为了更好地理解:
arg="ABC"
python -c "print '"$arg"'"
输出:
ABC
BASH脚本是错误的。
#!/bin/bash
arg="A B C"
python -c "print '$arg'"
并输出
$ sh test.sh
A B C
请注意,要连接两个字符串变量,您不需要将它们放在字符串常量之外
链接地址: http://www.djcxy.com/p/29139.html