Answers:
在这里串的重定向(<<<
)是一个简单的形式,这里的文件重定向(<<
)。这里的字符串重定向不是“二进制安全的”;Bash将在here字符串上执行扩展。另外,Bash会在here字符串的末尾添加换行符(发出命令xxd -p <<< "foo"
,您将得到666f6f0a
回报)。
I / O重定向是您唯一安全的选择(不包括管道)。
这里没有类似二进制的安全问题。您可以存储编码的数据并尝试
COMMAND_WITH_BIN_INPUT <(uudecode <(echo "$uuEncodedData"))
但这不远
echo "$uuEncodedData"|uudecode|COMMAND_WITH_BIN_INPUT
但没有管道metachar。
od -a <<< ""
,您将看到nl
而不是十六进制值。
$GIF
,一开始,您的变量即使在开始之前也没有保持全二进制。但是,除NUL字符外,它保留所有其他字符。(作为参考:vaab.blog.kal.fr/2014/05/03/…)