用途:编写严格符合 POSIX 的 sh 脚本,最大化在 Linux、BSD、Solaris、AIX、macOS 及嵌入式环境中的可移植性。
主要能力:规避 bash 专有特性(数组、[[ ]]、进程替换、花括号展开、local、source、${var//} 等);用 set -eu、引号包裹变量、[ ] 测试、while+case 解析参数、mktemp 与 trap 清理、printf 输出、. 加载脚本等模式实现防御式编程;用 command -v 检测命令、uname -s 识别平台;提供无数组时的位置参数、分隔字符串、逐行读取等替代写法;覆盖安全校验(数字输入、-- 分隔、umask 077、避免 eval)与性能优化(内建优先、避免循环内子 shell)。
使用方式:脚本以 #!/bin/sh 开头;用 ShellCheck -s sh、shfmt -ln posix、checkbashisms 做静态检查;在 dash、ash、bash --posix、yash 上测试,可用 bats-core、shellspec、shunit2 等框架;CI 中做多 shell 矩阵与容器测试。
适用场景:跨平台工具脚本、容器与 Alpine/BusyBox 环境、嵌入式与只读文件系统、init 启动脚本、从 bash 迁移到 POSIX sh。
限制:不适用于与 POSIX shell 无关的任务;部分环境缺少 mktemp、seq 等工具需自行提供回退;POSIX 不支持 pipefail、数组与关联数组,复杂字符串处理需借助 sed/awk。具体收费与平台支持暂未提供。