从Bash向Python函数传递参数

5
我正在尝试以下命令。
 python -c 'import sample; sample.Functionname()'
 python -c 'import sample; sample.printFxn("helloWorld")'

这两种方法都可以正常工作,但是当我将一个变量作为参数传递时,会出现以下错误。

 File "<string>", line 1 import sample; sample.printFxn($filename) SyntaxError: invalid syntax

什么是从Bash将变量作为参数传递给Python函数的正确方法?

你试过谷歌搜索吗? - Micha Wiedenmann
将代码写入文件中,然后使用 sys.argv 从文件中运行它以获取参数。 - furas
1
你没有提供导致错误的命令行。 - jpmc26
2个回答

7

不要将字符串变量插入命令中,而是将值作为参数传递给Python脚本。

python -c 'import sys, sample; sample.printFxn(sys.argv[1])' "$fileName"

0

单引号(')可以防止shell解析字符串并评估变量。您可以使用双引号代替,这样shell将评估您的变量:

python -c "import sample; sample.printFxn('$fileName')"

2
@SivakamiSubbu 请注意,以这种方式包含输入实际上存在安全漏洞。如果您确信您的文件名没有被制作成恶意Python代码,那么手动运行它就可以了。但是,如果这是程序化的,并且将使用来自不受信任来源的输入,则应考虑实际使用命令行参数系统。 - jpmc26
考虑一下fileName的值本身是否包含单引号。 - chepner

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接