bash - bash 脚本如何在不使用 uudecode 的情况下写出二进制文件?

标签 bash scripting binary uudecode

我在这里为 bash 脚本专家准备了一个小谜题……我有一个 bash 脚本,它在运行时需要创建一个小的(80 字节)二进制文件。文件的内容需要包含在脚本本身中(即我不想只将文件与脚本一起打包)。

我的脚本目前是这样的:

echo 'begin-base64 644 dummy.wav' > /tmp/dummy.uu
echo 'UklGRkgAAABXQVZFZm10IBAAAAADAAEAAHcBAADcBQAEACAAZmFjdAQAAAAAAAAAUEVBSxAAAAAB' >> /tmp/dummy.uu
echo 'AAAAQDYlTAAAAAAAAAAAZGF0YQAAAAA=' >> /tmp/dummy.uu
echo '====' >> /tmp/dummy.uu
uudecode -o /tmp/dummy.wav /tmp/dummy.uu
rm /tmp/dummy.uu

...在上面的运行之后,我有了我的文件/tmp/dummy.wav。但是我刚刚发现运行这个脚本的计算机没有安装 uudecode(而且我不允许安装它),所以我需要找到一些其他方法来创建这个文件。有什么想法吗?

最佳答案

一些安装程序会做类似的事情:

#!/bin/bash
tail -n +4 $0 | tar xvzf -
exit
<tgz file appended here><newline>

关于bash - bash 脚本如何在不使用 uudecode 的情况下写出二进制文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3122254/

相关文章:

python - .bashrc 中设置的 Fabric 环境变量不可用

c# - 如何加速无尽跑酷

linux - 如何在脚本中运行 gcc 命令来执行 main.c

linux - awk 删除行/记录并将其移动到第三个字段值为空的另一个文件

java - 将二进制文件中的数组输出到程序

c++ - 在二进制文件 C++ 中写入和加载结构 vector

git - 如何使用 git hook pre-commit 来停止对 master 的提交

bash - 如何使用 bash shell 在 if 语句中检查特定文件类型

bash - 打印 unicode 字符

java - 将十六进制字符串转换为字节中的二进制字符串会抛出 NumberFormatException