linux – Bash / SH,Same命令输出不同?

前端之家收集整理的这篇文章主要介绍了linux – Bash / SH,Same命令输出不同?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_403_2@$cat a.sh #!/bin/bash echo -n "apple" | shasum -a 256 $sh -x a.sh + echo -n apple + shasum -a 256 d9d20ed0e313ce50526de6185500439af174bf56be623f1c5fe74fbb73b60972 - $bash -x a.sh + echo -n apple + shasum -a 256 3a7bd3e2360a3d29eea436fcfb7e44c735d117c42d1c1835420b6b9942dd4f1b -

最后一个是正确的.
这是为什么?以及如何解决

解决方法

根据POSIX,echo不支持任何选项.

因此,当echo -n与sh一起运行时,它输出literal -n而不是解释-n作为no-trailing-newline选项:

@H_403_2@$sh -c 'echo -n "apple"' -n apple # !! Note the -n at the beginning.

注意:并非所有sh实现都以这种方式运行;一些,比如Ubuntu(其中dash用作sh),确实支持-n选项,但重点是如果你的代码必须在多个平台上运行,你就不能依赖它.

符合POSIX标准的便携式打印到stdout的方法是使用printf utility

@H_403_2@printf %s "apple" | shasum -a 256
原文链接:https://www.f2er.com/linux/395111.html

猜你在找的Linux相关文章