命令行:

命令行:

为什么命令md5sum <<< 'ddd' (输出d6d88f2e50080b9602da53dac1102762 -:)正确,而不md5sum << 'ddd'正确?

这是什么<<<意思?

答案1

开始<<<一个“here string”:该字符串被扩展并馈送到程序的标准输入。 (在您的情况下,没有发生太多扩展。)它相当于:

echo ddd | md5sum

另一方面,<<启动一个此处文档。以下所有行(直到包含标记的行)ddd都将构成程序的输入。 (您应该使用不太可能出现在数据中的标记。)您可以实现与上面相同的效果,如下所示:

md5sum <<END
ddd
END

<<END和之间有一个区别<<'END':如果没有引号,此处文档中的任何变量、转义序列等都将照常展开。

答案2

<<<介绍了一个这里的字符串:后面的字符串<<<作为命令的输入传递。这源于 Byron Rakitzisrc对 Unix 的(Plan 9 shell)的实现,并且也存在于 zsh、ksh93、mksh、yash 和 bash 中。

<<介绍了一个这里的文档:shell 脚本的后续行作为命令的输入传递,后面的字符串<<是终止符。这里的文档适用于所有 Bourne 风格的 shell(Bourne、POSIX、ash、bash、ksh、zsh 等)、C 风格的 shell(csh、tcsh)以及从 Plan 9 shell 派生的 shell(rc、es、akanga) 。

相关内容