Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Yocto 如何从bash变量内部更新数据存储变量?_Yocto_Bitbake - Fatal编程技术网

Yocto 如何从bash变量内部更新数据存储变量?

Yocto 如何从bash变量内部更新数据存储变量?,yocto,bitbake,Yocto,Bitbake,我在bbclass文件中设置了一个变量,如: #some-class.bbclass PROC ??= "" 在继承该类的配方中,我有一个bash函数,在其中修改该变量并立即读取其值。但是,该值永远不会更新 #some-bb-file.bb inherit some-class.bbclass some_configure() { PROC=$(grep -r "Processor.*${cpu_id}" ... something) bbnote "PROC is ${PR

我在bbclass文件中设置了一个变量,如:

#some-class.bbclass
PROC ??= ""
在继承该类的配方中,我有一个bash函数,在其中修改该变量并立即读取其值。但是,该值永远不会更新

#some-bb-file.bb
inherit some-class.bbclass

some_configure() {
    PROC=$(grep -r "Processor.*${cpu_id}" ... something)
    bbnote "PROC is ${PROC}"
}

我总是在日志中看到“PROC is”。我试着打印“(grep-r”Processor.*${cpu\u id}”…something)的输出,它返回一个有效字符串。有人能告诉我我错过了什么吗?

我想你错过了回击

PROC=`grep -r "Processor.*${cpu_id}" ... something`
bbnote "PROC is ${PROC}"

代码段中bitbake和shell变量的使用是混合的。您的
bbnote
行应省略大括号以访问shell变量,即:

bbnote "PROC is $PROC"
说明:bitbake和局部shell变量不同。如果您在shell函数中,那么
${PROC}
是在
some class.bbclass
中定义的变量。执行
PROC=“foo”
时,不会重新定义该变量。如果使用
$PROC
,则使用由
PROC=“foo”
定义的shell变量


还有你在标题中的问题——我不确定是否可以从shell更新数据存储变量。您可以在Python函数中获取和设置数据存储变量(使用
d.getVar
d.setVar
)。

可以使用以下命令从Shell读取数据存储变量:

${@d.getVar('PROC')}
如果必须使用其他操作,请切换到Python