Arrays 包含数组作为引用的Bash copy变量
通过下面的代码,我可以将一个数组内容复制到另一个数组中,这样在更改一个数组时,另一个数组就不会被触动Arrays 包含数组作为引用的Bash copy变量,arrays,bash,variables,reference,Arrays,Bash,Variables,Reference,通过下面的代码,我可以将一个数组内容复制到另一个数组中,这样在更改一个数组时,另一个数组就不会被触动 #!/bin/bash declare -a ARRAY_A=(a b c d e) ARRAY_B=("${ARRAY_A[@]}") echo "Before removal:" printf "%s " ${ARRAY_A[@]} echo printf "%s " ${ARRAY_B[@]} echo
#!/bin/bash
declare -a ARRAY_A=(a b c d e)
ARRAY_B=("${ARRAY_A[@]}")
echo "Before removal:"
printf "%s " ${ARRAY_A[@]}
echo
printf "%s " ${ARRAY_B[@]}
echo
echo
echo "After removal:"
unset ARRAY_A[0]
printf "%s " ${ARRAY_A[@]}
echo
printf "%s " ${ARRAY_B[@]}
echo
印刷品:
Before removal:
a b c d e
a b c d e
After removal:
b c d e
a b c d e
是否可以将引用复制到该数组,以便在更改一个数组时,“另一个”(与之相同)也会发生更改(如下所示)
是吗?只需使用bash名称引用
#!/bin/bash
declare -a ARRAY_A=(a b c d e)
declare -n ARRAY_B=ARRAY_A
echo "Before removal:"
printf "%s " "${ARRAY_A[@]}"
echo
printf "%s " "${ARRAY_B[@]}"
echo
echo
echo "After removal:"
unset ARRAY_A[0]
printf "%s " "${ARRAY_A[@]}"
echo
printf "%s " "${ARRAY_B[@]}"
echo
注意:更喜欢在脚本中使用小写变量。按照惯例,大写变量是指导出变量,如列、行、PWD、UID、IFS等。是吗?只需使用bash名称引用
#!/bin/bash
declare -a ARRAY_A=(a b c d e)
declare -n ARRAY_B=ARRAY_A
echo "Before removal:"
printf "%s " "${ARRAY_A[@]}"
echo
printf "%s " "${ARRAY_B[@]}"
echo
echo
echo "After removal:"
unset ARRAY_A[0]
printf "%s " "${ARRAY_A[@]}"
echo
printf "%s " "${ARRAY_B[@]}"
echo
注意:更喜欢在脚本中使用小写变量。按照惯例,大写变量是指导出变量,如列、行、PWD、UID、IFS等