我尝试使用数组值(如循环的数组名称)进行双循环
array1="name1 name2"
name1="one two"
name2="red blue"
for name in $array1
do
for value in $name
do
echo "$name - $value"
done
done
Run Code Online (Sandbox Code Playgroud)
我需要在第二个循环中使用 'name' 到 '$name' ,但这对我不起作用。
如何在第二个循环中使用 array1 的值,如数组的名称?
这不是你在bash
.
a="foo bar"
Run Code Online (Sandbox Code Playgroud)
定义一个字符串/标量变量。并使用它 as $a
(unquoted) 执行 split+glob 运算符,该运算符仅对表示$IFS
文件模式分隔列表的字符串有意义。
在 中bash
,数组定义为:
a=(foo bar)
Run Code Online (Sandbox Code Playgroud)
所以在这里,你会想要:
array1=(name1 name2)
name1=(one two)
name2=(red blue)
for name in "${array1[@]}"
do
typeset -n nameref="$name"
for value in "${nameref[@]}"
do
printf '%s\n' "$name - $value"
done
done
Run Code Online (Sandbox Code Playgroud)
typeset -n
是一个相对较新的添加bash
并声明了nameref,这是一个包含另一个变量名称的变量,并且在扩展时实际上是指命名变量。
归档时间: |
|
查看次数: |
2761 次 |
最近记录: |