1、jq –arg传递的变量select()没有硬编码值就不能工作吗?
1 2 3 4
| 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 2
| jq '.test_group_1[] | select(.name == test_1-1).checksum = 1' $FILE_PATH
|