当前位置:  开发笔记 > 编程语言 > 正文

Yocto中的"sh ::未知操作数"

如何解决《Yocto中的"sh::未知操作数"》经验,为你挑选了1个好方法。

以下适用于Ubuntu但不适用于Yocto(Poky).

root@system:~/# x='abc'
root@system:~/# y=''
root@system:~/# [[ $(echo $x) != '' ]] && echo true
true
root@system:~/# [[ $(echo $y) != '' ]] && echo true
sh: : unknown operand

在Ubuntu中,最后一行不返回任何内容(如预期的那样).任何想法为什么它在Yocto中抛出错误?



1> jilles..:

显然,busybox ash的实现相当简单[[.它是相同的,[除了它期望一个]]而不是]最终的参数.这就错过了为什么它[[可以是有用的:[[应该是一个具有特殊解析的关键字,使用它看起来更漂亮并避免各种陷阱(同时添加一些自己的陷阱).我猜他们添加了它,所以在busybox ash上运行了一些未修改的bash脚本.

为避免混淆,我建议不要[[在busybox中使用.使用[和引用所有命令替换和参数扩展.

推荐阅读
携手相约幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有