SuperAPI AI 工具集

ia-linux-bash-scripting

写作与研究

查看项目

更新于 10-15 22:17

技能介绍

用途:帮助在 Linux 上编写防御性强、可维护且静态检查零告警的 Bash 脚本,目标环境为 GNU Bash 4.4+,不针对 macOS/BSD 或 Windows 路径的兼容处理。

主要能力与规则:脚本基础采用 #!/usr/bin/env bash、set -Eeuo pipefail 与 shopt -s inherit_errexit,并用 trap 处理 ERR 与 EXIT 清理;要求所有展开加引号,函数变量用 local、脚本常量用 readonly,输出优先用 printf '%s\n',条件用 [[ ]],算术用 (( )),命令替换用 $();选项结尾加 --;必需环境变量用 : "${VAR:?must be set}";禁止 eval 用户输入,命令以数组方式构建执行;区分 local 与赋值以保留退出码。

使用方式:参数解析用 while 配合 case 与 shift;用 require() 检查依赖;用 run() 包裹实现 DRY_RUN 干跑;用 atomic_write() 写临时文件再 mv 实现原子写入;用 retry() 做退避重试;用 flock 防止并发;用 ensure_dir/ensure_link 实现幂等;用 trap 处理 INT/TERM 并保留正确退出码;日志通过 log/info/warn/error/die 输出到 stderr;调试用 bash -x 与自定义 PS4。安全遍历文件使用 NUL 分隔的 read -r -d '' 配合 find -print0,或 readarray。

适用场景:Linux 自动化脚本、运维与部署脚本、CLI 工具与批处理任务,尤其需要对输入边界做校验、并对脚本做静态检查和格式化检查的场合。

限制:资料未提供关于收费、价格或平台支持范围的信息,暂未提供;文档面向 Bash 4.4+ 与 Linux,不覆盖 macOS/BSD 兼容写法。反模式部分指出:不要用 for f in $(ls),避免 local x=$(cmd) 掩盖退出码,区分裸赋值会因 set -e 中止而 local 会掩盖失败,尽量不要用 cat file | grep、优先 kill 而非 kill -9。完成前应运行 shellcheck --enable=all 与 shfmt -d,并测试空输入、缺失文件、路径含空格等边界情况。