从shell脚本返回一个数组,以在shell命令行中迭代/处理

时间:2017-01-18 08:08:58

标签: linux bash shell

我有一个脚本,它列出了对API的调用,并将响应代码收集到一个名为updateResponses的数组中。我看了很多位置并推荐了declare -p,但是它没有像它描述的那样工作,或者我使用它错了。

我需要的是:从脚本返回数组并通过迭代来验证元素。

我的script.sh包含此操作的要点:

   updateResponses=()
   do
    ..get statusCodes from list of calls in a loop...
     updateResponses+=("$statusCode")
   done
declare -p updateResponses
在执行此脚本后,在我的终端中,我看到阵列已打印出来,但它不是一个迭代的数组,尽管它看起来好像是重新初始化要使用的。运行echo "${#updateResponses[@]}"会返回0作为大小。

script.sh完成运行后的输出示例:

declare -a updateResponses='([0]="200" [1]="200" [2]="200" [3]="200" [4]="200" [5]="200" [6]="200" [7]="200" [8]="200" [9]="200" [10]="200" [11]="200" [12]="200" [13]="200" [14]="200" [15]="200" [16]="200" [17]="200" [18]="200" [19]="200" [20]="200" [21]="200" [22]="200" [23]="200" [24]="200" [25]="200" [26]="200" [27]="200" [28]="200" [29]="200" [30]="200" [31]="200" [32]="200" [33]="200")'

1 个答案:

答案 0 :(得分:0)

您需要在当前shell的上下文中运行脚本的输出,例如

$ . <(arr=('a b' 'c d' 'e;f') ; declare -p arr)
$ echo ${arr[1]}
c d