在bash中填充和读取数组

时间:2017-06-12 08:04:36

标签: arrays bash

我实际上做的是通过调用

从github api获取json字符串
curl -u <userName> https://api.github.com/orgs/<orgName>/repos > test

我没有直接这样做,因为为了让jq工作,我必须在开头添加{"result":并在文件末尾添加}

现在我的脚本在 getthem

RESULT=$(cat test | jq ".result[] | .html_url");
COUNT=0
URLS=()

for line in $RESULT;
do
  echo $COUNT $line
  URLS[$COUNT]=$line
  COUNT=$(($COUNT+1))
done

#DEBUG
echo $URLS

COUNT=0
for url in $URLS;
do
  #DEBUG
  echo $COUNT $url

  #DO SOMETHING WITH RESULTS LATER
  # clone --bare $url $<onlyRepoName>.git

  COUNT=$(($COUNT+1))
done

我的问题: 当我调用bash ./getthem时,第一个循环似乎有效,但在标有#DEBUG的回声中,只有一行添加到数组中。

这是我得到的输出

0 "https://github.com/<orgName>/<RepoName0>"
1 "https://github.com/<orgName>/<RepoName1>"
2 "https://github.com/<orgName>/<RepoName2>"
3 "https://github.com/<orgName>/<RepoName3>"
4 "https://github.com/<orgName>/<RepoName4>"
5 "https://github.com/<orgName>/<RepoName5>"
6 "https://github.com/<orgName>/<RepoName6>"
7 "https://github.com/<orgName>/<RepoName7>"

"https://github.com/<orgName>/<repoName0>" #this should be the whole array

0 "https://github.com/<orgName>/<repoName0>" #here again it should be all 8 entries...

我做错了什么?为什么不是URLS数组中的所有8个条目?

1 个答案:

答案 0 :(得分:2)

要访问URLS数组中的所有元素,您需要使用${URLS[@]},如下所示。

echo "${URLS[@]}"

COUNT=0
for url in "${URLS[@]}"
do
    # ...
done

Reference