将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

在这里你会得到一个语法错误,因为空格阻止了连接,所以下面的BC"'"被解释为两个不同的字符串,它们不是作为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

上一篇: Pass multiple args from bash into python

下一篇: bash compare variable and variable + string