我有一个简短的内联python脚本,我从bash脚本调用,我想让它处理一个多字变量(来自$*
)。我希望这只是工作:
#!/bin/bash
arg="A B C"
python -c "print '"$arg"'"
但它没有:
File "<string>", line 1
print 'A
^
SyntaxError: EOL while scanning string literal
为什么?
答案 0 :(得分:16)
BASH脚本错误。
#!/bin/bash
arg="A B C"
python -c "print '$arg'"
输出
$ sh test.sh
A B C
请注意,要连接两个字符串变量,您不需要将它们放在字符串常量
之外答案 1 :(得分:10)
我想解释一下为什么你的代码不起作用。
你想做的是:
arg="A B C"
python -c "print '""$arg""'"
输出:
A B C
您的代码问题是shell python -c "print '"$arg"'"
被解析为python -c "print '"A B C"'"
。见:
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