第2章:JQuery高级技巧

[TOC]

JQuery高级技巧

1、jq –arg传递的变量select()没有硬编码值就不能工作吗?

1
2
3
Product_Personnel_Array=$(cat ${Product_Personnel_FILE_PATH} | ${JQ_EXEC} -r '.[]') # -r 去除字符串引号
echo ${Product_Personnel_Array} | ${JQ_EXEC} -r --arg branchLastCommitUserName "$branchLastCommitUserName" 'select(.git_name=="qian")'
echo ${Product_Personnel_Array} | ${JQ_EXEC} -r --arg branchLastCommitUserName "$branchLastCommitUserName" 'select(.git_name==$branchLastCommitUserName)'

2、shell - jq 处理json

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 0、基础用法(验证通过✅)
FILE_PATH=~/Project/Bojue/mobile_flutter_wish/bulidScript/app_info.json
jq '.package_notification_argument_current.wechat.error.mentioned_list=2' $FILE_PATH

# 1.1、先测试修改数值时候(字符串),能否正确对应到key上(验证通过✅)
UpdateJsonKeyValue="1314"
jq --arg UpdateJsonKeyValue "$UpdateJsonKeyValue" '.package_notification_argument_current.wechat.error.mentioned_list=$UpdateJsonKeyValue' $FILE_PATH

# 1.2、先测试修改数值时候(数组),能否正确对应到key上
UpdateJsonKeyValue_Array=("a" "b" "c")
#UpdateJsonKeyValue="${UpdateJsonKeyValue_Array[*]}" # 这个是错误的❌
UpdateJsonKeyValue='["a", "b", "c", "d"]' # 必须转成这个才能通过✅
jq --arg UpdateJsonKeyValue "$UpdateJsonKeyValue" '.package_notification_argument_current.wechat.error.mentioned_list=$UpdateJsonKeyValue' $FILE_PATH

# 2、继续测试同时修改数值和key时候,能否正确对应到key上(验证失败❌)
UpdateJsonKey="package_notification_argument_current.wechat.error.mentioned_list"
UpdateJsonKeyValue=("a" "b" "c")
jq --arg UpdateJsonKey "$UpdateJsonKey" --arg UpdateJsonKeyValue "$UpdateJsonKeyValue" '.[$UpdateJsonKey]=$UpdateJsonKeyValue' $FILE_PATH


key要加[],值不用
1
jq '.test_group_1[] | select(.name == test_1-1).checksum = 1' $FILE_PATH