将多个参数从 bash 传递到 python

Pass multiple args from bash into python

我有一个从 bash 脚本调用的短内联 python 脚本,我想让它处理一个多词变量(来自 $*) .我希望这能正常工作:

#!/bin/bash

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

但事实并非如此:

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

为什么?

BASH 脚本有误。

#!/bin/bash

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

并输出

$ sh test.sh 
A B C

请注意,要连接两个字符串变量,您不需要将它们放在字符串常量之外

我想解释一下为什么您的代码不起作用。

你想做的是:

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

输出:

A B C

您的代码的问题是 python -c "print '"$arg"'" 被 shell 解析为 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