Bash-ini-parser:一款强大的 Bash INI 解析器库

导航菜单

lsferreira42/bash-ini-parser

一个用于在 Bash 中解析和操作 INI 配置文件的强大 shell 脚本库。

lsferreira42.github.io/bash-ini-parser/

许可证

BSD-3-Clause license

6 stars 0 forks

尝试在线体验

你可以通过我们的交互式 Web 演示,直接在浏览器中尝试 Bash INI Parser。该演示提供了一个预先加载了示例文件的终端环境,因此你无需安装即可测试该库。

在线试用 Bash INI Parser

功能特性

安装

只需将 lib_ini.sh 脚本包含在你的项目中,并在你的 shell 脚本中 source 它:

source /path/to/lib_ini.sh

基本用法

#!/bin/bash
source ./lib_ini.sh

# 创建一个新的 INI 文件,包含 section 和 key
CONFIG_FILE="config.ini"
ini_add_section "$CONFIG_FILE" "app"
ini_write "$CONFIG_FILE" "app" "name" "My Application"
ini_write "$CONFIG_FILE" "app" "version" "1.0.0"

# 读取值
app_name=$(ini_read "$CONFIG_FILE" "app" "name")
echo "App name: $app_name"

# 列出 section 和 key
echo "Available sections:"
ini_list_sections "$CONFIG_FILE" | while read section; do
  echo "- $section"
  echo " Keys:"
  ini_list_keys "$CONFIG_FILE" "$section" | while read key; do
    value=$(ini_read "$CONFIG_FILE" "$section" "$key")
    echo " - $key = $value"
  done
done

# 删除一个 key
ini_remove_key "$CONFIG_FILE" "app" "name"

# 删除一个 section
ini_remove_section "$CONFIG_FILE" "app"

高级功能

数组支持

# 写入数组值
ini_write_array "$CONFIG_FILE" "app" "supported_formats" "jpg" "png" "gif"

# 读取数组值
formats=$(ini_read_array "$CONFIG_FILE" "app" "supported_formats")
for format in $formats; do
  echo "Format: $format"
done

默认值

# 获取一个值,如果未找到则使用默认值
timeout=$(ini_get_or_default "$CONFIG_FILE" "app" "timeout" "30")

环境变量导出

# 将所有 INI 值导出到环境变量,并添加前缀
ini_to_env "$CONFIG_FILE" "CFG"
echo "App name from env: $CFG_app_name"

# 只导出一个 section
ini_to_env "$CONFIG_FILE" "CFG" "database"

文件导入

# 将一个 INI 文件中的所有值导入到另一个 INI 文件中
ini_import "defaults.ini" "config.ini"

# 只导入特定的 section
ini_import "defaults.ini" "config.ini" "section1" "section2"

Key 存在性检查

if ini_key_exists "config.ini" "app" "version"; then
  echo "The key exists"
fi

配置选项

可以通过在 source 该库之后直接在脚本中设置以下变量,或者在 source 该库之前将其设置为环境变量,来自定义库的行为:

# 方法 1:在 source 后在脚本中设置
source ./lib_ini.sh
INI_DEBUG=1

# 方法 2:在 source 之前设置为环境变量
export INI_DEBUG=1
source ./lib_ini.sh

可用的配置选项:

# 启用调试模式以查看详细的操作
INI_DEBUG=1

# 启用对 section 和 key 名称的严格验证
INI_STRICT=1

# 允许空值
INI_ALLOW_EMPTY_VALUES=1

# 允许在 section 和 key 名称中使用空格
INI_ALLOW_SPACES_IN_NAMES=1

库增强

安全改进

核心功能增强

文件操作

读取和写入

实用功能

高级用法示例

使用多个文件

# 导入默认设置,然后使用用户设置覆盖
ini_import "defaults.ini" "config.ini"
ini_import "user_prefs.ini" "config.ini"

# 在文件之间复制特定 section
ini_import "source.ini" "target.ini" "section1" "section2"

与数据库脚本集成

# 将数据库配置加载到环境变量中
ini_to_env "database.ini" "DB"

# 在数据库命令中使用
mysql -h "$DB_mysql_host" -u "$DB_mysql_user" -p"$DB_mysql_password" "$DB_mysql_database"

数组操作

# 在数组中存储角色列表
ini_write_array "config.ini" "permissions" "roles" "admin" "user" "guest"

# 读取和处理数组值
roles=$(ini_read_array "config.ini" "permissions" "roles")
for role in $roles; do
  echo "Processing role: $role"
  # 附加处理...
done

示例

查看 examples 目录以获取完整的用法示例:

许可证

本项目采用 BSD 许可证,该许可证是一种宽松的自由软件许可证,对所涵盖软件的使用和分发限制最少。

作者

贡献

欢迎贡献!请随时提交 Pull Request。