用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/vamseeachanta/workspace-hub --skill json-config-loader-4-multi-section-ini-parsing命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
基于 SOC 职业分类
正在显示 SKILL.md
| name | json-config-loader-4-multi-section-ini-parsing |
| description | Sub-skill of json-config-loader: 4. Multi-Section INI Parsing. |
| version | 1.0.0 |
| category | _core |
| type | reference |
| scripts_exempt | true |
Parse INI-style files with sections:
#!/bin/bash
# ABOUTME: Parse INI-style configuration with sections
# ABOUTME: Supports [section] headers and section.key access
declare -A INI_CONFIG
declare -a INI_SECTIONS=()
parse_ini() {
local file="$1"
local current_section="default"
if [[ ! -f "$file" ]]; then
echo "Error: INI file not found: $file" >&2
return 1
fi
INI_SECTIONS=("default")
while IFS= read -r line || [[ -n "$line" ]]; do
# Skip comments and empty lines
[[ "$line" =~ ^[[:space:]]*[#\;] ]] && continue
[[ -z "${line// /}" ]] && continue
# Section header
if [[ "$line" =~ ^\[([^\]]+)\] ]]; then
current_section="${BASH_REMATCH[1]}"
INI_SECTIONS+=("$current_section")
continue
fi
# Key=value within section
if [[ "$line" =~ ^([^=]+)=(.*)$ ]]; then
local key="${BASH_REMATCH[1]}"
local value="${BASH_REMATCH[2]}"
# Trim whitespace
key="${key#"${key%%[![:space:]]*}"}"
key="${key%"${key##*[![:space:]]}"}"
value="${value#"${value%%[![:space:]]*}"}"
value="${value%"${value##*[![:space:]]}"}"
# Store as section.key
INI_CONFIG["${current_section}.${key}"]="$value"
fi
done < "$file"
}
# Get INI value
ini_get() {
local section="$1"
local key="$2"
local default="${3:-}"
echo "${INI_CONFIG["${section}.${key}"]:-$default}"
}
# Get all keys in a section
ini_section_keys() {
local section="$1"
local prefix="${section}."
for key in "${!INI_CONFIG[@]}"; do
if [[ "$key" == "${prefix}"* ]]; then
echo "${key#$prefix}"
fi
done
}
# List all sections
ini_sections() {
printf '%s\n' "${INI_SECTIONS[@]}" | sort -u
}
# Usage
parse_ini "settings.ini"
# Access values
DB_HOST=$(ini_get "database" "host" "localhost")
DB_PORT=$(ini_get "database" "port" "5432")
LOG_LEVEL=$(ini_get "logging" "level" "INFO")
echo "Database: $DB_HOST:$DB_PORT"
echo "Log Level: $LOG_LEVEL"
# Iterate section keys
echo "Database settings:"
for key in $(ini_section_keys "database"); do
echo " $key = $(ini_get "database" "$key")"
done