将多个args从bash传递给python

时间:2015-04-20 14:07:21

标签: python string bash command-line-arguments

我有一个简短的内联python脚本,我从bash脚本调用,我想让它处理一个多字变量(来自$*)。我希望这只是工作:

#!/bin/bash

arg="A B C"
python -c "print '"$arg"'"

但它没有:

  File "<string>", line 1
    print 'A
           ^
SyntaxError: EOL while scanning string literal

为什么?

2 个答案:

答案 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

这里出现语法错误,因为空格阻止了连接,因此以下BC"'"被解释为两个不同的字符串,这些字符串不是作为python解释器命令传递的字符串的一部分(只接受-c之后的字符串作为命令。)

为了更好地理解:

arg="ABC"
python -c "print '"$arg"'"

输出:

ABC