shell间接引用
创建一个间接引用,用于获取数组的所有元素。
命令解析
board_specs="${!BOARD_SPECS_ARRAY}[@]"
分解理解:
BOARD_SPECS_ARRAY:这是一个变量,其值应该是某个数组的名称${!BOARD_SPECS_ARRAY}:间接引用,获取BOARD_SPECS_ARRAY变量值所代表的变量的值[@]:数组展开语法,表示获取数组的所有元素最终结果:board_specs变量包含了指定数组的所有元素
实际示例
bash
定义两个数组
declare -a BOARD_A_SPECS=(“cpu:arm” “ram:2GB” “storage:16GB”)
declare -a BOARD_B_SPECS=(“cpu:x86” “ram:4GB” “storage:32GB”)
设置要使用的数组名称
BOARD_SPECS_ARRAY=“BOARD_A_SPECS”
使用间接引用获取数组所有元素
board_specs=“${!BOARD_SPECS_ARRAY}[@]”
现在可以使用这个引用
echo “所有规格: ${!board_specs}”
输出: 所有规格: cpu:arm ram:2GB storage:16GB
遍历数组
for spec in “${!board_specs}”; do
echo “规格: $spec”
done
等价写法
如果不使用间接引用,需要这样写:
bash
直接引用(需要知道具体数组名)
board_specs=(“${BOARD_A_SPECS[@]}”)