主要观点:作者的 shell 脚本变大,考虑用合适语言重写,想将其写成单个 C 文件并能在 shell 中直接运行,通过利用 C 中以#
开头的行作为预处理指令和 UNIX shell 注释的特性,以及编写一个能编译自身的 shell 脚本实现,同时介绍了此方法的注意事项和用 Python 实现的简单版本。
关键信息:
- 用
#if 0
包裹 shell 脚本,使其在 C 编译时被跳过,同时在其中编写 C 代码。 - 编写的 shell 脚本通过
realpath
获取自身文件路径并编译运行,如bin="$(mktemp)";cc -o "$bin" "$(realpath $0)";"$bin"
。 - 注意事项包括每次运行效率低于正常 shell 脚本,
realpath
命令非标准但多数系统存在,最新 POSIX 标准已包含realpath
。
重要细节: - 下载script.c可尝试。
- Python 版本只需使用
#!/usr/bin/env python3
和print("Hello, World!")
。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。