tuic_docker/bin/utils/jq_util.sh
Olia Lisa a054c19835 init
2025-12-29 15:56:22 +08:00

28 lines
947 B
Bash
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# 修改json文件的属性值
# 案例1modify_json_file "/foo/bar.json" "person.name" "张三"
# 案例2modify_json_file "/foo/bar.json" "servers" '["a.com", "b.com"]'
# 该函数能自动处理不同数据类型,包括数组、对象和数字等。
function modify_json_file() {
local json_file=$1 # json文件路径
local key=$2 # 要修改的key
local value=$3 # 要修改的value
#如果key的值是.开头, 则去掉.号
if [[ ${key} == "."* ]]; then
key=${key:1}
fi
# 检查值是否为有效的 JSON 格式(如数组、对象或数字)。
# 如果是,则直接将值传递给 jq无需引号。
if echo "${value}" | jq . >/dev/null 2>&1; then
jq ".${key} = ${value}" "${json_file}" > "${json_file}.tmp"
else
# 否则,将值视为字符串,并添加引号。
jq ".${key} = \"${value}\"" "${json_file}" > "${json_file}.tmp"
fi
mv ${json_file}.tmp ${json_file}
}