此脚本的主要目标是下载以下URL
.toggle()
出于这个原因,我需要获得我用这种格式获得的NBA比赛的游戏。
https://stats.nba.com/stats/boxscoresummaryv2?GameID=(varGameId)
完整脚本的步骤
1 - 创建包含日期的文件夹
2 - 转到
之前创建的文件夹3 - 下载今天的分数
4 - 使用jq .length获取今天的总比赛
5 -Loop迭代当天的总比赛。
我的问题是我不知道如何通过这个游戏我会变成变量String。
$(cat 00_todays_scores.json | jq '.gs.g['$COUNTER'].gid')
完整的脚本。
$(cat 00_todays_scores.json | jq '.gs.g['$COUNTER'].gid')
问候! :)
答案 0 :(得分:0)
我认为这只是一个你正在引用的引用问题。两件事:
"
双引号内插值。在单引号内,它只会被视为字符串文字" $COUNTER
"。以下内容应该解决这两个问题。 (不要担心$ COUNTER周围的明显单步.Bash只会看到双引号。当它到达jq
时,变量已经被插值并且它是鳍用单引号。)
while [ $COUNTER -lt $total ]; do
mkdir $(cat 00_todays_scores.json | jq ".gs.g['$COUNTER'].gid")
let COUNTER=COUNTER+1
done
(虽然我对jq
的了解不够,知道它的语法是否正确。)
答案 1 :(得分:0)
为什么一次只能检索一个GID?
# with bash 4.0 or newer
readarray -t gids < <(jq -r '.gs.g[].gid' <00_todays_scores.json)
...将把你所有的GID放到一个bash数组中(如果你有bash 4.0或更新版本)。
使用bash 3.x,它看起来像:
# doesn't require bash 4.0; passes through invalid exit status if jq doesn't succeed
IFS=$'\n' read -r -d '' -a gids \
< <(jq -r '.gs.g[].gid' <00_todays_scores.json && printf '\0')
无论哪种方式,您都可以按如下方式打印该数组:
declare -p gids
...或通过以下方式迭代:
for gid in "${gids[@]}"; do
echo "Retrieved a gid: $gid"
done
...或将其包含的每个元素传递给mkdir
的单个调用:
mkdir -p -- "${gids[@]}"