Bash脚本-在使用Python输出时未找到命令错误

Bash脚本-在使用Python输出时未找到命令错误,python,bash,Python,Bash,我有一个bash脚本,它调用python脚本。Python脚本向我返回一个对象,然后我在bash中将其分配给一个变量,并必须返回该对象 在尝试评估python脚本的输出时,未找到命令。Bash将其视为命令而不是值 代码如下: function myfunc() { local __resultvar=$1 local myresult=$(/home/centos/pentaho2.py) eval $__resultvar="'$myresult'&quo

我有一个bash脚本,它调用python脚本。Python脚本向我返回一个对象,然后我在bash中将其分配给一个变量,并必须返回该对象

在尝试评估python脚本的输出时,未找到命令。Bash将其视为命令而不是值

代码如下:

function myfunc()
{
    local  __resultvar=$1
    local  myresult=$(/home/centos/pentaho2.py)
    eval $__resultvar="'$myresult'"
}

myfunc result
echo $result
我的python命令返回如下值:

[('quatre vingt douze ave des champs-élysées', 'road')]
执行脚本后,我看到以下错误:

./pentaho2.sh: line 5: vingt: command not found

有人能帮我理解我缺少了什么吗?

如果您的bash版本是4.3或更高版本,在函数中使用nameref可以避免
eval
和固有的引用问题

myfunc(){
本地-n_uuresultvar=$1
__resultvar=$(/home/centos/pentaho2.py)
}
myfunc结果
回显“$result”
要查看操作中的错误,请使用
set-x

myresult=“[('quatre vingtouze ave des champsélysées','road')”
集合x
eval result=“$myresult”
输出

+eval'result=''''.''[(''''quart vingtouze ave des champsélysées''''.'',''road'.'')''''''
++结果='[(四分之一)
++vingt douze大道(香榭丽舍大道)]
的确是一个引用问题


另一种方法是使用
declare
而不是
eval

$\uuu resultvar=result
$declare“$\uu resultvar=$myresult”
$declare-p结果
declare--result=“[('quatre vingtouze ave des champsélysées','road')”

你有没有#/在python脚本的开头使用usr/bin/python?路径必须是本地系统上的实际路径。您好@RamanSailopal,是的,我的脚本中有python路径:#/usr/bin/env python3 python命令的结果包含引号,这很可能导致错误。我建议避免整个评估业务,因为如果你是bash新手,这会给你带来很多悲伤。如果您的目标是从函数返回一些字符串,则应该考虑使用子过程方法或简单地分配给全局变量,因为那些一般更容易工作。<代码> Prtf-V“$ 1”“%s”“$(/HOST/CENDOS/PANAHO2.PY)”< /代码>也是一种选择。