Jea*_*lus 78 shell io-redirection
为什么命令md5sum <<< 'ddd'
(输出:)是d6d88f2e50080b9602da53dac1102762 -
正确的,而md5sum << 'ddd'
不是正确的?
什么<<<
意思?
chi*_*rlu 57
将<<<
启动“这里字符串”:该字符串膨胀并送到程序的标准输入。(在你的情况下,没有太多的扩展发生。)它相当于:
echo ddd | md5sum
Run Code Online (Sandbox Code Playgroud)
另一方面,<<
启动一个 here 文档。以下所有行(直到包含标记的行)ddd
将构成程序的输入。(您应该使用不太可能出现在您的数据中的标记。)您可以像这样实现与上面相同的效果:
md5sum <<END
ddd
END
Run Code Online (Sandbox Code Playgroud)
<<END
和之间有一个区别<<'END'
:如果没有引号,here 文档中的任何变量、转义序列等都将照常展开。
Gil*_*il' 38
<<<
引入一个here字符串:后面的字符串<<<
作为输入传递给命令。这起源于 Byron Rakitzisrc
为 Unix实现的(Plan 9 shell),也存在于 zsh、ksh93、mksh、yash 和 bash 中。
<<
介绍一个here文档:shell脚本的后续行作为输入传递给命令,后面的字符串<<
是终止符。此处的文档适用于所有 Bourne 风格的 shell(Bourne、POSIX、ash、bash、ksh、zsh 等)、C 风格的 shell(csh、tcsh)以及从 Plan 9 shell 派生的 shell(rc、es、akanga) .