Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 包含数组作为引用的Bash copy变量_Arrays_Bash_Variables_Reference - Fatal编程技术网

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等