技能 posix-shell-pro
🐚

posix-shell-pro

安全 ⚙️ 外部命令

为任何 Unix 系统编写可移植的 POSIX shell 脚本

由于使用 bash 专有功能,Shell 脚本经常在不同系统上失败。本技能确保您的脚本使用严格的 POSIX 兼容性在任何地方运行。

支持: Claude Codex Code(CC)
🥉 74 青铜
1

下载技能 ZIP

2

在 Claude 中上传

前往 设置 → 功能 → 技能 → 上传技能

3

开启并开始使用

测试它

正在使用“posix-shell-pro”。 创建一个 POSIX 脚本,带有验证功能来备份目录

预期结果:

  • #!/bin/sh
  • set -eu
  •  
  • 用法:backup.sh <source_dir> <dest_dir>
  •  
  • if [ $# -lt 2 ]; then
  • echo "错误:需要源目录和目标目录" >&2
  • exit 1
  • fi
  •  
  • src="$1"
  • dest="$2"
  •  
  • [ -d "$src" ] || { echo "源不是目录" >&2; exit 1; }
  • mkdir -p "$dest" || exit 1
  •  
  • tar -cf - -C "$src" . | (cd "$dest" && tar -xf -)
  • echo "备份成功完成"

正在使用“posix-shell-pro”。 以可移植方式检查命令是否存在

预期结果:

使用:command -v cmd >/dev/null 2>&1 && echo "已找到" || echo "缺失"

安全审计

安全
v1 • 2/24/2026

This is a prompt-only skill with no executable code. Static analysis scanned 0 files and detected 0 security issues with a risk score of 0/100. The skill provides instructional content on POSIX shell scripting best practices and actually promotes security patterns including input validation, safe variable quoting, cleanup traps, and warnings against eval on untrusted input. No network calls, command execution, or sensitive operations detected.

0
已扫描文件
0
分析行数
1
发现项
1
审计总数

风险因素

⚙️ 外部命令
未记录任何特定位置
审计者: claude

质量评分

38
架构
100
可维护性
87
内容
50
社区
100
安全
91
规范符合性

你能构建什么

跨平台部署脚本

创建安装和部署脚本,在 Linux、BSD、macOS 和嵌入式系统上完全一致地工作,无需安装 bash。

容器和嵌入式系统工具

为 Alpine Linux、BusyBox 和资源受限环境构建轻量级脚本,这些环境中 bash 不可用。

传统系统管理

维护和现代化旧版 Unix 系统(如 Solaris、AIX 和旧版 Linux)上的脚本,这些系统可能缺少 bash 或使用较旧版本。

试试这些提示

基础 POSIX 脚本模板
创建一个符合 POSIX 标准的 shell 脚本,验证输入参数并执行简单的文件操作。包含使用 set -eu 的适当错误处理、输入验证和清理 trap。
将 bash 转换为 POSIX
将此 bash 脚本转换为严格的 POSIX sh。将所有数组、[[ 条件判断和 bash 专用功能替换为符合 POSIX 标准的等效实现。解释所做的每项更改。
可移植的参数解析
实现符合 POSIX 标准的参数解析,脚本接受 -h 表示帮助、-v 表示详细模式、-o 表示输出文件,以及位置参数。使用 while 和 case 而不使用 getopts 来处理长选项。
跨平台兼容性助手
创建一个 POSIX shell 函数库,处理 Linux、BSD、macOS 和 BusyBox 之间的平台差异。包括操作系统检测、命令可用性检查以及常用工具的可移植实现。

最佳实践

  • 始终将变量扩展引用为 "$var" 以防止单词拆分和通配符扩展
  • 对所有输出使用 printf 而不是 echo,因为 echo 的行为在不同 shell 中有所不同
  • 使用 trap 命令实现清理功能,在 EXIT、INT 和 TERM 信号时删除临时文件

避免

  • 使用 [[ 条件判断或 bash 数组,这些在 dash、ash 和其他 POSIX shell 上会失败
  • 使用 echo -e 或 echo -n,这些在不同系统上的行为不一致
  • 使用进程替换 <() 或 source 命令,而不是管道和点运算符

常见问题

POSIX sh 和 bash 之间有什么区别?
POSIX sh 是标准化的最小化 shell,可在所有 Unix 系统上工作。Bash 添加了许多扩展,如数组、[[ 条件判断和进程替换,这些会破坏可移植性。仅使用 POSIX 功能的脚本可在 dash、ash、busybox 和所有符合 POSIX 标准的 shell 上运行。
如何测试我的脚本是否真正符合 POSIX 标准?
使用 dash 运行您的脚本 ./script.sh,因为 dash 对 POSIX 兼容性要求严格。还可以使用 ShellCheck 并带有 -s sh 标志,以及使用 checkbashisms 来检测在其他 shell 上会失败的 bash 专用结构。
我可以在 POSIX sh 函数中使用局部变量吗?
local 关键字不符合 POSIX 标准。使用带有函数前缀的唯一变量名,如 func_name_var,或小心使用全局变量。某些 shell 支持 local,但它在严格的 POSIX shell 上会失败。
什么可以替代 POSIX sh 中的 bash 数组?
使用带有 set -- item1 item2 的位置参数,并使用 for arg 进行迭代。对于分隔数据,使用带有冒号或换行符分隔符的 IFS 操作。将多个值作为单独的参数传递给函数。
此技能是否与 Claude Codex 和 Claude Code 兼容?
是的,此技能适用于 Claude Codex 和 Claude Code。无论您使用哪个 AI 助手来生成或审查脚本,它都提供 POSIX shell 脚本编写指导。
POSIX 脚本能在 Docker 容器中工作吗?
是的,尤其是在最小化容器中,如 Alpine Linux,它使用 busybox ash 作为默认 shell。POSIX 脚本可在任何容器中工作而无需安装 bash,使它们成为小型容器镜像的理想选择。

开发者详情

文件结构

📄 SKILL.md