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扩展有关.
我需要做什么才能将该字符串原样放入文件中?
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)