bash-portability 用于指导编写可移植的 POSIX 兼容脚本,并帮助判断何时可以使用 Bash 专有特性。
用途:当涉及 POSIX 兼容性、可移植 Shell 脚本、跨 Shell 兼容、bashisms、shebang 选择等问题时使用。
主要能力:
- Shebang 选择:Bash 脚本用 #!/usr/bin/env bash;POSIX 脚本用 #!/bin/sh;仅在系统保证 bash 位置或安全策略要求绝对路径时用 #!/bin/bash。
- POSIX 与 Bash 特性对照:如 [[ ]]、(( ))、数组、local、${var,,}、<<<、=~、source、function f()、$'...'、{1..10} 等,并给出 POSIX 替代建议。
- POSIX 兼容写法:条件判断用 [ ] 并正确加引号;大小写转换用 tr;子串用 expr 或 cut;逐行读文件用 while IFS= read -r line; do ... done < "$file";命令替换优先用 $(command)。
- Bash 专有特性:扩展测试 [[ ]]、索引与关联数组、参数扩展、here string、进程替换等。
- Shell 检测:通过 ${BASH_VERSION:-}、${BASH_VERSINFO[0]:-0} 或 ${SHELL##*/} 判断运行环境。
- 可移植性决策指南与常见陷阱:echo 与 printf 差异、变量赋值空格问题、export 写法、无数组时的位置参数与 IFS 拆分。
使用方式:作为技能参考,在编写或审查 Shell 脚本时按需查阅对应模式与建议。
适用场景:脚本需运行于容器、嵌入式、dash/ash/busybox sh 等最小系统,或作为系统初始化脚本时优先 POSIX;目标系统保证有 Bash 且需要数组、正则或复杂字符串处理时可用 Bash。
限制:资料未提供安装命令、收费信息或具体平台支持范围。