这是一个相当假设的问题,所以请不要问我为什么要这样做。
假设我有一个GIF
包含二进制数据的变量,并假设我不能使用管道|
运算符,以下应该是使用“triple-less-than”运算符的正确方法:
openssl enc -base64 <<< $GIF
但是,在我看来这<<<
不是二进制安全的,因此二进制数据会损坏。
是否有二进制安全的等价物?
Dan*_*ruz 34
在这里串的重定向(<<<
)是一个简单的形式,这里的文件重定向(<<
)。这里的字符串重定向不是“二进制安全的”;Bash 将对 here 字符串执行扩展。此外,Bash 将在 here 字符串的末尾附加一个新行(发出命令xxd -p <<< "foo"
,您将得到666f6f0a
回报)。
除了管道,您唯一安全的选择是I/O redirection。
类似的不是二进制安全问题在这里。您可以存储编码数据并尝试此操作
COMMAND_WITH_BIN_INPUT <(uudecode <(echo "$uuEncodedData"))
Run Code Online (Sandbox Code Playgroud)
然而这并不遥远
echo "$uuEncodedData"|uudecode|COMMAND_WITH_BIN_INPUT
Run Code Online (Sandbox Code Playgroud)
但没有管道元字符。
Bash 通常不是二进制安全的,并且会在替换过程中破坏包含二进制内容的变量中的空值和换行符。
所以我认为答案是“不”,但更根本的是“不是在 shell 脚本语言中”,因为它们似乎都存在二进制问题。
但是我想说的是,您打算将数据放入 $GIF 中,而是将其放入文件中,或者使用 python 作为替代脚本语言,它可以毫无问题地处理二进制数据。
归档时间: |
|
查看次数: |
23212 次 |
最近记录: |