linux – BashSH,Same命令输出不同?

linux – BashSH,Same命令输出不同?,第1张

概述$cat a.sh#!/bin/bashecho -n "apple" | shasum -a 256$sh -x a.sh+ echo -n apple+ shasum -a 256d9d20ed0e313ce50526de6185500439af174bf56be623f1c5fe74fbb73b60972 -$bash -x a.sh+ echo -n apple+
$cat a.sh#!/bin/bashecho -n "apple" | shasum -a 256$sh -x a.sh+ echo -n apple+ shasum -a 256d9d20ed0e313ce50526de6185500439af174bf56be623f1c5fe74fbb73b60972  -$bash -x a.sh+ echo -n apple+ shasum -a 2563a7bd3e2360a3d29eea436fcfb7e44c735d117c42d1c1835420b6b9942dd4f1b  -

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

解决方法 根据POSIX,echo不支持任何选项.

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

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

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

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

printf %s "apple" | shasum -a 256
总结

以上是内存溢出为你收集整理的linux – Bash / SH,Same命令输出不同?全部内容,希望文章能够帮你解决linux – Bash / SH,Same命令输出不同?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/1033360.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-24
下一篇2022-05-24

发表评论

登录后才能评论

评论列表(0条)

    保存