我想知道在bash脚本中是否可以包含python脚本以便在(在bash脚本中)编写我在python程序中编写的函数的返回值?
例如: 我的文件" file.py"有一个函数返回一个变量值" my_value" (代表文件的名称,但无论如何) 我想创建一个bash脚本,它必须能够执行一个命令行,例如"摄取my_value"
所以你知道如何在bash脚本中包含python文件(import ...?),如何从bash脚本中的python文件中调用一个值?
提前谢谢。
更新
实际上,我的python文件看起来像这样:
class formEvents():
def __init__(self):
...
def myFunc1(self): # function which returns the name of a file that the user choose in his computeur
...
return name_file
def myFunc2(self): # function which calls an existing bash script (bash_file.sh) in writing the name_file inside it (in the middle of a line)
subprocess.call(['./bash_file.sh'])
if__name__="__main__":
FE=formEvents()
我不知道它是否足够清楚,但这是我的问题:它能够在bash_file.sh中写入name_file
Jordane
答案 0 :(得分:4)
最简单的方法是通过标准UNIX Pipeline和您的Shell。
以下是一个例子:
<强> foo.sh:强>
#!/bin/bash
my_value=$(python file.py)
echo $my_value
<强> file.py:强>
#!/usr/bin/env python
def my_function():
return "my_value"
if __name__ == "__main__":
print(my_function())
这种方式很简单:
foo.sh
python file.py
file.py
的解释)运行函数my_function
并将其返回值打印为“标准输出”my_value
my_value
中的值也回显到“标准输出”,您应该看到“my_value”打印到Shell / Terminal。答案 1 :(得分:0)
如果python脚本将返回值输出到控制台,您应该能够执行此操作
my_value=$(command)
编辑:该死的,打败我吧
答案 2 :(得分:0)
或者,您可以创建bash脚本进程参数。
#!/usr/bin/bash
if [[ -n "$1" ]]; then
name_file="$1"
else
echo "No filename specified" >&2
exit 1
fi
# And use $name_file in your script
在Python中,应相应地更改子进程调用:
subprocess.call(['./bash_file.sh', name_file])