我试图在另一个变量(B
)中包含对变量(A
)的引用。 B
在for循环期间从数组中获取其值,我希望A
也获得相同的值,但这不起作用。
#!/bin/bash
A=$B
ARRAY=( 1 2 3 )
for B in ${ARRAY[@]}
do
echo "A="$A
echo "B="$B
done
我如何使$A
与$B
具有相同的值?
答案 0 :(得分:2)
使用bash >=4
,您可以使用nameref
完成所需的操作。使用nameref
或declare
和local
选项创建-n
。要将A
创建为nameref
的{{1}},您可以使用:
B
然后使用您的脚本:
declare -n A=B ## declare A as a 'nameref' of B
使用/输出示例
#!/bin/bash
declare -n A=B ## declare A as a 'nameref' of B
ARRAY=( 1 2 3 )
for B in ${ARRAY[@]}
do
echo "A="$A
echo "B="$B
done
答案 1 :(得分:0)
不确定这是否可以按照您想要的方式回答您的问题,但是我相信A仅需要在for循环中分配,而不是在脚本的开头分配,因为B没有值。
#!/bin/bash
A=$B
# B is not assigned there which is why A is ""
echo "B: $B"
ARRAY=( 1 2 3 )
for B in ${ARRAY[@]}
do
# B is assigned here so A is assigned the same value
A=$B
echo "A="$A
echo "B="$B
done
输出:
B:
A=1
B=1
A=2
B=2
A=3
B=3