源码(后文 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 为何是全局变量啊?我尝试了以下写法:
- 只在遍历数组 A 之前加入
local ii - 只在方法 AA 中遍历数组 B 之前加入
local ii - 以上两个写法都安排上
好像最终输出的都是 listB 数组的最后一个元素值,这又是怎么个操作? 有点懵,以前没遇到过,有大佬解惑吗?