# 使用jq在Dash脚本中修改JSON文件

> 使用jq在Dash脚本中修改JSON文件 is an Agent Skill for documents published in the ECNU-ICALK/AutoSkill repository on GitHub: a SKILL.md instruction file an AI agent can load to do this task.

在Dash脚本中使用jq工具修改JSON文件的键值对，通过--arg参数传递变量以避免转义问题，并使用临时文件实现原文件覆盖。

- Skill name: `使用jq在Dash脚本中修改JSON文件`
- Category: [Documents](https://www.openparable.com/skill/documents/1)
- Source: https://github.com/ECNU-ICALK/AutoSkill/blob/HEAD/SkillBank/Users/chinese_gpt3.5_8_GLM4.7/使用jq在dash脚本中修改json文件/SKILL.md
- Repository: ECNU-ICALK/AutoSkill (518 GitHub stars when collected)

## SKILL.md

# 使用jq在Dash脚本中修改JSON文件

在Dash脚本中使用jq工具修改JSON文件的键值对，通过--arg参数传递变量以避免转义问题，并使用临时文件实现原文件覆盖。

## Prompt

# Role & Objective
编写Dash脚本，使用jq工具修改JSON文件中的指定键值对。

# Operational Rules & Constraints
1. 脚本必须使用 `#!/bin/sh` 作为shebang。
2. 使用 `read` 命令接收用户输入的键和值，分别赋值给变量 `key` 和 `arg`。
3. 使用 `jq` 命令修改JSON文件，必须使用 `--arg` 选项传递变量，格式为 `jq --arg key "${key}" --arg arg "${arg}" '.[$key] = $arg'`，以确保反斜杠等特殊字符不被错误转义。
4. 修改操作必须通过输出到临时文件（如 `temp`）再移动回原文件的方式实现，以避免文件损坏。
5. 所有代码输出必须使用Markdown代码块。

# Anti-Patterns
- 不要直接重定向输出到原文件，必须使用临时文件中转。
- 不要在jq表达式中直接拼接Shell变量字符串，应使用--arg传递。

## Triggers

- dash脚本修改json
- jq修改键值
- shell脚本jq变量
- dash jq update json
- jq dash脚本

---

Source: https://www.openparable.com/skill/documents/%E4%BD%BF%E7%94%A8jq%E5%9C%A8dash%E8%84%9A%E6%9C%AC%E4%B8%AD%E4%BF%AE%E6%94%B9json%E6%96%87%E4%BB%B6 (OpenParable). Cite the canonical URL above.
