我想创建一个由字符串组成的子数组数组,并为主数组中的每个子数组一次获取所有子数组值。
例如,我希望"str1" "str2"第一次打印出来,但实际上打印出来了"sub1"
#!/bin/bash
declare -a arr=(sub1 sub2)
declare -a sub1=("str1" "str2")
declare -a sub2=("str3" "str4")
for item in "${arr[@]}"; do
echo $item
done
Run Code Online (Sandbox Code Playgroud)
我想要这种行为,以便我以后可以调用脚本并传递"str1" "str2"给采用两个值的参数。然后我想再次运行脚本"str3" "str4"
为循环的控制变量(即)设置nameref属性item,以便它可以在循环体中用作对其值指定的变量的引用。
declare -n item
for item in "${arr[@]}"; do
echo "${item[@]}"
done
Run Code Online (Sandbox Code Playgroud)
或者,正如Ivan 建议的那样,您可以附加[@]到每个名称并在控制变量上使用间接扩展。
for item in "${arr[@]/%/[@]}"; do
echo "${!item}"
done
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请参阅: