如何在bitbake/yocto中逃避"$"?

pax*_*blo 5 variables recipe task bitbake yocto

我在Yocto中的一个食谱需要创建一个包含非常特定的行的文件,例如:

${libdir}/something
Run Code Online (Sandbox Code Playgroud)

为此,我有配方任务:

do_install() {
    echo '${libdir}/something' >/path/to/my/file
}
Run Code Online (Sandbox Code Playgroud)

请记住,我想要完全如图所示的字符串,我无法弄清楚如何逃避它以防止bitbake替换其自己的值libdir.

我原本以为echo带单引号的命令可以解决问题(就像它在bashshell中一样)但bitbake必须先解释该行,然后再将其传递给shell.我也试过用都逃脱它$$\$没有用.

我在bitbakedoco中找不到任何阻止变量扩展的东西,只是与立即,延迟和Python扩展有关.

我需要做什么才能将该字符串原样放入文件中?

pax*_*blo 5

Bitbake似乎在防止扩张方面存在特殊问题.无论您使用单引号还是双引号,变量都会在传递给shell之前展开.

因此,如果您希望它们被扩展,您需要有效地它们从BitBake中隐藏起来,这可以通过以下方式完成:

echo -e '\x24{libdir}/something' >/path/to/my/file
Run Code Online (Sandbox Code Playgroud)

这使用十六进制版本,$以便BitBake不会将其识别为要扩展的变量.

需要确保您正在运行的正确echo不过的命令.在某些发行版(如Ubuntu)下,它可能会运行sh-internal echo而无法识别该-e选项.为了解决这个问题,你可能必须echo在文件系统上运行它的变体(并确实识别该选项):

/bin/echo -e '\x24{libdir}/something' >/path/to/my/file
Run Code Online (Sandbox Code Playgroud)