C 语言中的 Shell 脚本编写 | 塞巴斯蒂亚诺·特龙托

主要观点:作者的 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 python3print("Hello, World!")
阅读 10
0 条评论