微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

sh中的“&>>”在Ubuntu 16.04.2和Fedora 24中performance方式各不相同

考虑下面的sh命令:

sh -c 'sleep 3 &>> /dev/null'

&>>应该redirectstdout和stderr 。 但是,在Fedora 24和Ubuntu 16.04.2中的解释是不同的。

在Fedora 24中,它正好以这种方式工作,上面的命令一直等到sleep结束。

在Ubuntu 16.04.2中,命令的运行方式与sleep 3 & >> /dev/null ,也就是sleep被发送到后台,命令立即退出

命令在shell脚本中找不到

为什么如果; 然后回声“OK”; networking连接; 打印好吗?

没有。 为date范围打印的线条

在Bash中换行/覆盖function

使用unix工具和多列进行sorting

这种差异会导致我们遇到的问题,并且不能很容易地find,因为我在R脚本中调用了诸如foo arg1 arg2 output_file &>> test.log ,并期望以output_file结尾的命令被写入。 在Fedora 24中,它按预期工作,但令我惊讶的是Ubuntu 16.04.2中的行为变化。

我不确定这是否是一个logging的行为。

你如何将文本从Windows中的Firefox复制到Unix中的bash shell?

cp:之后缺less目标文件操作数

非常复杂的带有大量引号的shellstring,如何处理escape

使用bash自动化点文件

Linuxfind具有相似名称文件,并移动到新目录

sh不是bash 。

在Fedora中sh是bash ,当sh被引用时, sh 与POSIX标准 “密切”。

sh在Ubuntu是dash 。

&>>是一种抨击 。

最后一个链接解释了如何修复dash (Ubuntu中的sh ):

sh -c 'sleep 3 > /dev/null 2>&1'

这也将在Bash工作。 注意single > – 你不需要在/ dev / null中使用append操作符( >> )。

提示:看到这样的情况,将所有的脚本编写成与sh两个实现兼容可能是很有吸引力的,但是你只会让你的生活变得不必要的困难。 使用所有您感兴趣的平台上认可用的最强大的shell。在这种情况下,这将是bash (版本4),这也是许多其他发行版的认版本。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐