源码(后文 listA 和 listB 数组简称 A 数组和 B 数组):
#!/bin/bash
AA(){
for ii in "${listB[@]}"; do #|
: #| ==> 这 AA 方法中的 for 循环目的是遍历 B 数组,但什么都不做。
done #|
}
listA=(1) #
listB=(a b c d) #___这四行仅仅定义和打印出两个数组中的元素(后文结果中的前两行内容)
echo "listA: ${listA[@]}" #
echo "listB: ${listB[@]}" #
for ii in "${listA[@]}"; do
echo "在 AA 方法前的值: ${ii}" # 传 ii 给方法 AA 前看值是多少
AA "${ii}" # 将遍历的 ii 传给方法 AA
echo "在 AA 方法后的值: ${ii}" # 传 ii 给方法 AA 后看值是多少
done
输出结果:
listA: 1
listB: a b c d
在 AA 方法前的值: 1
在 AA 方法后的值: d
可以看到:遍历数组 A 时所用的变量 ii 和方法内遍历数组 B 时所用变量是相同的,但这变量 ii 为何是全局变量啊?我尝试了以下写法:
local ii
local ii
好像最终输出的都是 listB 数组的最后一个元素值,这又是怎么个操作? 有点懵,以前没遇到过,有大佬解惑吗?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.