0
我得到消息时,我尝试运行我的代码“JSON解析问题”,我不知道为什么,因为它是有道理的(至少对我来说):如何正确输入字符串以便在bash中解析为JSON?
#!/bin/bash
LAST_TAG_NAME=$(curl -s 'https://api.github.com/repos/USERNAME/REPONAME/releases/latest' | sed -n '/tag_name/{ s/[^:]*:[\ ]*\([^,]*\),/\1/; p; }' | sed -e 's/^"//' -e 's/"$//')
LAST_TAG_NUMBER=$(echo ${LAST_TAG_NAME} | grep -o '\..*' | sed -e 's/^.//')
TAG_NAME="api-web-${YEAR}w${WEEK}"
CURRENT_NUM=$((LAST_TAG_NUMBER + 1))
FINAL_NAME="$TAG_NAME.$CURRENT_NUM"
curl -u USERNAME:TOKEN -X POST 'https://api.github.com/repos/USERNAME/REPONAME/releases' -H 'Accept: application/json, text/javascript' --data-binary '{"tag_name": $FINAL_NAME}'
基本上,所有的可变填充作品。 TAG_NAME看起来像是api-web-2017w42,而CURRENT_NUM只是一些像2的数字。问题只会在我尝试创建新版本时退出。请注意,USERNAME和REPONAME是匿名的。
问题出在'$ FINAL_NAME'上。它不扩展,所以服务器收到'{“tag_name”:$ FINAL_NAME}',这是无效的JSON。改用“{”tag_name“:”'“$ FINAL_NAME”'“}''。 – randomir